【问题标题】:JavaScript method named 'method': where is it defined? [duplicate]名为“方法”的 JavaScript 方法:它在哪里定义? [复制]
【发布时间】:2014-12-30 08:34:32
【问题描述】:

第 6.6 节。 'JavaScript: The Good Parts' 一书,调用 Array 的方法如下。原型继承在哪里 JavaScript 对象的层次结构是定义的“方法”方法。一世 搜索了annotated ECMAScript 5.1 reference Mozilla Developer Network JavaScript documentation 但没找到。

Array.method('reduce', function (f, value) {
    var i;
    for (i = 0; i < this.length; i += 1) {
        value = f(this[i], value);
    }
    return value;
});

如果有人能告诉我这个方法是从哪里来的,我会 非常感谢。

谢谢。

【问题讨论】:

  • 我想这是一个自定义方法,用于获取函数名称和实现。如果原生函数不存在,它会为你实现 polyfill。虽然只是一个有根据的猜测......
  • Crockford 不是“经典继承”的最佳去处,他从不做对。创建 Parent 的实例来设置 Child 的原型,并且声明的 Patent 构造函数不能被重复使用。他担心封装并需要私有成员,但在更改不属于他的对象时会破坏它。此答案中有关原型的更多信息:stackoverflow.com/questions/16063394/…
  • 即使你不喜欢构造函数,下面的电子书也有更好的例子。我建议首先阅读其他评论中的答案,以便您了解实例特定和原型成员并了解构造函数所扮演的角色。然后这个:github.com/getify/You-Dont-Know-JS/tree/master/…

标签: javascript arrays methods properties


【解决方案1】:

Crockford 将该方法添加到 Function.prototype 作为助手(如 benhowdle89 建议的那样):

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

"method" method in Crockford's book: Javascript: The Good Parts

【讨论】:

    猜你喜欢
    • 2018-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    相关资源
    最近更新 更多