console.log(Function instanceof Object); // true
Function.prototype === Function.__proto__ // true
Function.prototype.__proto__ === Object.prototype // true
function instance_of(L, R) {
let O = R.prototype; // 取右側顯式原型
L = L.__proto__; // 取左側隱式原型
while (true) {
if (L === null) return false;
if (O === L) return true; // 關鍵判斷
L = L.__proto__;
}
}
L = Function.__proto__ = Function.prototypeO = Object.prototypeL (Function.prototype) !== O (Object.prototype)L = L.__proto__ = Object.prototypeL === O → 返回 trueJavaScript 設計中,**函數是一等公民**,本身也是對象。Function.prototype 繼承自 Object.prototype,因此 Function 作為構造函數,其隱式原型鏈最終指向 Object.prototype,滿足 instanceof 判定邏輯。
Object instanceof Function 也為 true(Object 是函數構造的)Function instanceof Function 為 true(函數由 Function 構造)