5

我一直在阅读“javascript:好的部分”。

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

示例用法是:

Number.method('integer', function () {
    return Math[this < 0 ? 'ceiling' : 'floor'](this);
});
document.writeln((-10 / 3).integer()); // -3

两个问题:

  1. “通过给 Function.prototype 增加一个方法method,我们不再需要键入原型属性的名称。现在可以隐藏那一点丑陋了。” 这意味着什么?所以它节省了输入“.prototype.integer”?似乎不是特别重要。

  2. 我们增强Function.prototype了 ,这听起来它是特定于函数的。Number 是一个原生类型,我们应该增加它Object.prototype吗?

4

2 回答 2

3
  1. 是的。在这方面,这是一个相当愚蠢的例子。

  2. 请记住,Javascript 类型是函数(例如,typeof Number == "function"),这将更有意义。

于 2013-10-04T18:54:35.543 回答
1
  1. 我目前正在读同一本书,这对我来说也有点奇怪。我认为这一切的重点是举例说明如何使用改变 Function 的原型。
  2. 你最终可以改变 Object.prototype。但是,它会在原型链上更高,并且需要更多时间来查找它。“方法”的重点是将方法添加到给定构造函数的原型中。因此将其添加到 Function 的原型中会更有意义。
于 2013-10-04T19:24:23.887 回答