示例来自:“引用;Javascript——好的部分”;

示例来自:“引用;Javascript——好的部分”;,javascript,function,prototype,Javascript,Function,Prototype,下面这句话解决了什么“丑陋”?有些东西我没有得到,我很感激你能帮助我理解它是什么 例如,通过增强Function.prototype,我们可以使一种方法适用于所有函数: Function.prototype.method = function (name, func) { this.prototype[name] = func; return this; }; 通过使用方法扩充Function.prototype,我们不再需要键入prototype属性的名称。这一点丑陋

下面这句话解决了什么“丑陋”?有些东西我没有得到,我很感激你能帮助我理解它是什么


例如,通过增强Function.prototype,我们可以使一种方法适用于所有函数:

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

通过使用方法扩充Function.prototype,我们不再需要键入prototype属性的名称。这一点丑陋现在可以隐藏了。

嗯,丑陋是主观的,但让我们看看

你通常写:

function Foo () {}
Foo.prototype.method1 = function ()  { /*...*/ };
Foo.prototype.method2 = function ()  { /*...*/ };
您可以使用希望继承到新操作符创建的实例的属性来扩展
prototype
对象a

例如,使用
var obj=new Foo()
您正在创建
Foo
构造函数的实例,该对象将继承绑定到
Foo.prototype
对象和中更高级别的其他对象的所有属性

Crockford的方法也一样,该方法在
函数中定义。prototype
对象中,所有函数都继承自该对象,因此您可以这样调用该方法:

function Foo () {}
Foo.method('method1', function () { /*...*/ });
Foo.method('method2', function () { /*...*/ });
它基本上只是在代码中隐藏了
原型
这个词,Crockford认为这个词很难看

《JavaScript的好部分》是一本非常好的书,但我认为它是基于道格拉斯·克罗克福德对语言的个人观点


在很多方面我都同意他的观点,但在某些方面我也不同意……

在阅读代码时,使用“原型”一词似乎更为明确和明显。谢谢你的回答:)我同意。在这种情况下,克罗克福德找错了方向。