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 Function是true.但价值(-10 / 3) instanceof Number是false.这不是很混乱吗?如果数学中的数字(例如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的帮助和一点搜索得到了这个结论,所以它可能不够精确.欢迎任何更正或完成.
我相信原型链是:Object>> Function:Number
Number instanceof Function; // true
Number instanceof Object; // true
Function instanceof Object; // true
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
245 次 |
| 最近记录: |