javascript中Number和Function.prototype之间的关系是什么?

Cha*_*erQ 6 javascript function-prototypes prototype-chain

我正在读这本书Javascript:Good Parts.当我阅读下面的代码时,我有点困惑:

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

Number.method('integer',function(){
    return Math[this < 0 ? 'ceil' : 'floor'](this);
});
Run Code Online (Sandbox Code Playgroud)

我认为上面代码的第一部分意味着JavaScript中的任何函数现在都有一个名为method的方法.但"数字"也是一个功能吗?为什么Number.method有道理?

我认为Number继承了继承Object.prototype(Number-> Number.prototype-> Object.prototype)的Number.prototype,因为Number在开头没有"方法"方法,它会在原型链中查找它.但是Function.prototype不在链上,对吗?

Number,Number.prototype和Function.prototype之间的关系是什么?


更新I:

我已经搜索了一些额外的信息,现在更加困惑了.有人说,这个数字实际上是一个功能,这似乎是有道理的,因为价值Number instanceof Functiontrue.但价值(-10 / 3) instanceof Numberfalse.这不是很混乱吗?如果数学中的数字(例如3,2.5,( - 10/3))Number在JavaScript中甚至不是,那么如何(-10 / 3)调用integer()哪个方法来自Number?(以下行来自同一本书)

 document.writeln((-10 / 3).integer());
Run Code Online (Sandbox Code Playgroud)

更新II:

问题基本解决了.

感谢@ Xophmeister的帮助,现在我的结论是Number可以调用method因为它Number是一个构造函数,所以它被链接到Function.prototype.至于为什么在JavaScript中类型为原始类型的数字(3,2.5,( - 10/3))可以调用对象Number具有的方法,应该引用此页面.

我基本上从@ Xophmeister的帮助和一点搜索得到了这个结论,所以它可能不够精确.欢迎任何更正或完成.

Xop*_*ter 3

我相信原型链是:Object>> Function:Number

Number instanceof Function; // true
Number instanceof Object;   // true
Function instanceof Object; // true
Run Code Online (Sandbox Code Playgroud)