刚读完Crockford的" JavaScript:The Good Parts ",我对他在伪古典与原型方法上的立场有疑问.其实我对他的立场并不感兴趣; 我只是想了解他的论点,所以我可以建立自己的立场.
在这本书中,克罗克福德似乎可以推断,构造函数和"所有的爵士乐"不应该在JavaScript中使用,他提到如何"新"的关键字被严重实现 - 即非构造函数可以用"新"被称为关键字,反之亦然(可能导致问题).
我以为我知道他来自哪里,但我想我不知道.
当我需要创建一个新模块时,我通常会这样开始:
function MyModule(something) {
this.something = something || {};
}
Run Code Online (Sandbox Code Playgroud)
然后我会为它的原型添加一些方法:
MyModule.prototype = {
setSomething : function(){},
getSomething : function(){},
doSomething : function(){}
}
Run Code Online (Sandbox Code Playgroud)
我喜欢这个模特; 这意味着我可以在需要时创建一个新实例,它有自己的属性和方法:
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.
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何使用更适合JavaScript的方法实现上述目标?换句话说,如果"JavaScript"是一个人,她会建议什么?
另外:当克罗克福德说一个特定的设计模式"比另一个更具表现力"时,他的意思是什么?
Sho*_*og9 10
重要的是要记住,像许多其他JavaScript程序员一样,Crockford首先接触该语言,着眼于"修复"它 - 使其更像其他(所谓的"经典")OO语言.所以编写了大量的结构代码,构建了库和框架......然后他们开始意识到它并不是真正必要的; 如果你按照自己的条件接近JS,你就可以相处得很好.