刚刚读完Crockford的“JavaScript: The Good Parts”,我对他关于伪经典和原型式方法的立场有疑问。实际上,我并不是很关心他的立场;我只是想理解他的论点,以便能够建立自己的立场。
在这本书中,Crockford似乎暗示JavaScript中不应该使用构造函数和“所有那些东西”,他提到了“new”关键字的实现不好-即非构造函数可以用“new”关键字调用,反之亦然(可能会引起问题)。
我以为我理解他的观点,但我想我没有理解清楚。
当我需要创建一个新模块时,我通常会像这样开始:
我的问题是:如何使用更适合JavaScript的方法来实现上述目标?换句话说,如果“JavaScript”是一个人,她会建议什么?
此外:Crockford说一个特定的设计模式“更具表现力”,是什么意思?
在这本书中,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”是一个人,她会建议什么?
此外:Crockford说一个特定的设计模式“更具表现力”,是什么意思?