在JS中,Function instanceof Object將會返回true,這是為何?在Object的
prototype中似乎找不到Function.__proto__或Function.constructor.prototype的
對象啊
instanceof實現原理如下:
function instance_of(L, R) {//L 表示左表達式,R 表示右表達式
var O = R.prototype;// 取 R 的顯示原型
L = L.__proto__;// 取 L 的隱式原型
while (true) {
if (L === null)
return false;
if (O === L)// 這裡重點:當 O 嚴格等於 L 時,返回 true
return true;
L = L.__proto__;
}
}
而
Function.prototype.===Function.__proto__;
Function.prototype.__proto__===Object.prototype
由此判斷Function為Object的一個實例將會為true