console.log(Function.prototype)
console.log(Object.prototype)
console.log((Function.prototype).hasOwnProperty("toString"))
console.log(Object.prototype.hasOwnProperty("toString"))
这四行代码在控制台上分别输出这些:
ƒ () { [native code] }
{constructor: ƒ, defineGetter: ƒ, defineSetter: ƒ, hasOwnProperty: ƒ, lookupGetter: ƒ, …}
true
true
为什么Function.prototype里面明明没有toString方法,打印的却是true
这样清楚了么?
不是啊,你打印的是Function.prototype.__proto__ 吧,Function.prototype.__proto__ ==Object.prototype 这样他肯定会显示出来tostring方法的,但是现在是想知道Function.prototype为啥也能检测到tostring方法。。。
@a继续骄傲a: 。。。。。。。。你代码里用过构造函数没?用过的话,就应该知道,哪怕是class extends也是这个意思,原型链上的东西,会一直追溯到Object下,如果还是没有,那就是没有,不然,只要是在这个链子上的,就可以找得到。
@女寝楼下卖瓜的泡泡糖: 嗯嗯嗯对,是,记起来了,,谢啦
@a继续骄傲a: 没事,去啃啃原型链这块的东西就好了
我在浏览器控制台上调试,Function.prototype是有toString方法的。
Function.prototype.toString() 打印出:"function () { [native code] }"
Function.prototype.toString 打印出 ƒ toString() { [native code] }
嗯我的也是,native code里面不是应该是空的么。。为啥还会有