2010-06-01 53 views
7

下面解决了什么“丑陋”?有些东西我没有收到,我很感激帮助理解它是什么。来自“Javascript - The Good Parts”的示例


例如,通过增加Function.prototype的,我们可以提供一个方法的所有功能:

Function.prototype.method = function (name, func) { 
    this.prototype[name] = func; 
    return this; 
}; 

通过与方法方法增强Function.prototype的,我们不再需要键入原型属性的名称。现在可以隐藏这一点丑陋。

回答

15

好吧,丑陋是主观的,但让我们来看看。

你平时写:

function Foo() {} 
Foo.prototype.method1 = function() { /*...*/ }; 
Foo.prototype.method2 = function() { /*...*/ }; 

您与您要继承由新的运营商创建的实例属性扩展prototype对象constructor function

例如你正在创建的Foo构造的一个实例var obj = new Foo();,该对象将继承所有绑定到Foo.prototype目标和其他目标的prototype chain更高的性能。

的Crockford的方法不一样,该方法在Function.prototype对象定义,所有的功能从该对象继承,所以你可以这样调用方法:

function Foo() {} 
Foo.method('method1', function() { /*...*/ }); 
Foo.method('method2', function() { /*...*/ }); 

它基本上只是的从代码,克罗克福德认为丑陋prototype字...

“的JavaScript好的部分”确实是一个很好的书,但我认为是基于个人的角度出发,道格拉斯Crockfor d有语言。阅读代码时

我同意他的观点与很多东西,但我也有一些方面不同意...

+1

用的是“原型”,似乎更加明确和明显。感谢您的答案:) – Matrym 2010-06-01 08:34:10

+2

我同意。在这种情况下,克罗克福德正在咆哮着错误的树木。 – bobince 2010-06-03 08:25:49

相关问题