Number和Function之间的关系是什么?javascript中的原型

What's the relationship between Number and Function.prototype in javascript?

本文关键字:javascript 原型 是什么 关系 Function 之间 Number      更新时间:2023-09-26

我在读Javascript: the 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);
});
我认为上面代码的第一部分意味着JavaScript中的任何函数现在都有一个名为方法的方法。但是"Number"也是一个函数吗?为什么Number.method是有意义的?

我猜想Number继承了Number。prototype继承了Object.prototype(Number->Number.prototype->Object.prototype),由于Number在开始时没有"method"方法,它将沿着原型链寻找它。但功能。原型不在链上,对吧?

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


UPDATE I:

我搜索了一些额外的信息,现在更困惑了。有人说Number实际上是一个函数,这似乎是有道理的,因为Number instanceof Function的值是true,但(-10 / 3) instanceof Number的值是false。这不是很令人困惑吗?如果数学中的数字(如3,2.5,(-10/3))甚至不是JavaScript中的Number, (-10 / 3)如何调用integer(),这是Number的方法?(下面这一行出自同一本书)

 document.writeln((-10 / 3).integer());

UPDATE II:

问题基本上解决了。

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

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

我认为原型链是:Object> Function> Number:

Number instanceof Function; // true
Number instanceof Object;   // true
Function instanceof Object; // true