示例来自:“Javascript – The Good Parts”

以下解决了什么“丑陋”?有一些我没有得到的东西,我很感激帮助理解它是什么.

例如,通过扩充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 ()  { /*...*/ };

将原型对象扩展为constructor function,并将要继承的属性扩展到由new运算符创建的实例.

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

Crockford的方法也是这样,该方法在Function.prototype对象中定义,所有函数都从该对象继承,因此您可以像这样调用方法

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

它基本上只是隐藏了代码中的原型单词,Crockford认为丑陋……

“JavaScript The Good Parts”是一本非常好的书,但我认为这是基于Douglas Crockford对该语言的个人观点.

我同意他很多事情,但我也不同意某些方面……

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...