以下解决了什么“丑陋”?有一些我没有得到的东西,我很感激帮助理解它是什么。
例如,通过扩充 Function.prototype,我们可以使一个方法对所有函数可用:
Function.prototype.method = function (name, func) {
this.prototype[name] = func;
return this;
};
通过使用 method 方法扩充 Function.prototype,我们不再需要键入原型(prototype)属性的名称。现在可以隐藏那一点丑陋了。
最佳答案
好吧,丑陋是主观的,但让我们看看。
你通常写:
function Foo () {}
Foo.prototype.method1 = function () { /*...*/ };
Foo.prototype.method2 = function () { /*...*/ };
您将 prototype
对象扩展为 constructor function具有您希望继承到新运算符创建的实例的属性。
例如,var obj = new Foo();
您正在创建 Foo
构造函数的实例,该对象将继承绑定(bind)到 的所有属性code>Foo.prototype
对象和 prototype chain 中更高层的其他对象.
Crockford 的方法也是如此,该方法定义在 Function.prototype
对象中,所有函数都继承自该对象,因此您可以这样调用该方法:
function Foo () {}
Foo.method('method1', function () { /*...*/ });
Foo.method('method2', function () { /*...*/ });
它基本上只是隐藏代码中的prototype
词,Crockford 认为它丑陋...
“JavaScript The Good Parts”是一本非常好的书,但我认为它是基于 Douglas Crockford 对这门语言的个人观点。
我同意他的很多观点,但我也有一些不同意的地方......
关于javascript - 来自 : "Javascript - The Good Parts" 的示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2947723/