Javascript扩充Function.prototype

时间:2013-10-04 18:49:06

标签: javascript

我一直在阅读“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,我们不再需要输入 原型属性的名称。现在可以隐藏一点丑陋。“这意味着什么?所以它节省了打字”.prototype.integer“?似乎并不是非常重要。

  2. 我们增加了Function.prototype,这听起来是功能特有的。数字是原生类型,我们应该增加Object.prototype吗?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

  1. 我正在阅读同一本书,这对我来说似乎有点奇怪。我认为这一点的重点是举例说明如何改变Function的原型。
  2. 你最终可以改变Object.prototype。但是,它会在原型链上升得更高,并且需要更多的时间来查找它。 “方法”的重点是给定构造函数的原型添加方法。因此,将它添加到Function的原型更有意义。