【发布时间】:2010-10-21 22:12:56
【问题描述】:
刚读完 Crockford 的“JavaScript: The Good Parts”,我有一个关于他对伪古典与原型方法的立场的问题。其实我对他的立场并不感兴趣;我只是想了解他的论点,以便建立自己的立场。
在书中,Crockford 似乎推断构造函数和“all that jazz”不应该在 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”是一个人,她会建议什么?
另外:Crockford 说一种特定的设计模式比另一种“更具表现力”是什么意思?
【问题讨论】:
标签: javascript