伪古典与“JavaScript的方式”

刚刚完成阅读克罗克福德的“JavaScript: The Good Parts”,我有一个关于他的态度与古典与原型方法的问题。其实我对他的立场并不感兴趣我只想了解他的观点,所以我可以建立自己的立场。

在这本书中,Crockford似乎推断构造函数的功能和“所有的爵士”都不应该用在JavaScript中,他提到“new”关键字如何被严重执行 – 即非构造函数可以用’new’关键字,反之亦然(可能会导致问题)。

我以为我明白了他来自哪里,但我猜我不会。

当我需要创建一个新的模块时,我通常会这样开始:

function MyModule(something) {
    this.something = something || {};
}

然后我会添加一些方法到它的原型:

MyModule.prototype = {
    setSomething : function(){},
    getSomething : function(){},
    doSomething : function(){}
}

我喜欢这个模特儿这意味着我可以在需要时创建一个新的实例,它有自己的属性和方法:

var foo = new MyModule({option1: 'bar'});
// Foo is an object; I can do anything to it; all methods of the "class"
// are available to this instance.

我的问题是:如何使用更适合JavaScript的方法来实现上述?换句话说,如果“JavaScript”是一个人,她会建议什么?

另外:克罗克福德当他说一个特定的设计模式“更具表现力”,那么另一个呢?

见:Is JavaScript’s “new” Keyword Considered Harmful?

重要的是要记住,克罗克福德像许多其他JavaScript程序员一样,首先接近语言,以“修复”它,使其更像其他(所谓的“古典”)OO语言。因此,编写了大量的结构代码,构建了图书馆和框架,然后他们开始意识到并不是真的有必要;如果您以自己的方式处理JS,您可以一直很好。

http://stackoverflow.com/questions/791131/pseudo-classical-vs-the-javascript-way

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:伪古典与“JavaScript的方式”