在javascript中,什么都是对象。数组、函数都是对象。那么Function、Object这两个内置对象又有什么联系呢?
console.log(Function);
console.log(Object);
这是两个构造函数。
console.log(Function.prototype);
console.log(Object.prototype);
两个构造函数的显示原型。
console.log(Function.__proto__);
console.log(Object.__proto__);;
两个函数的隐式原型。是相同的,都是Function.prototype。因为构造函数嘛,也是函数。所以Function的显示原型就是它们的原型链上一层。所有构造函数的隐式原型都是Function.prototype。
接下来我们再看,
console.log(Function.prototype.__proto__);
console.log(Object.prototype);
console.log(Function.prototype.__proto__ === Object.prototype);
Function.prototype.__proto__等于Object.prototype。也很好理解,任何原型对象的隐式原型__proto__指向Object的显示原型,因为prototype也是对象嘛。
终结理解
console.log(Function.__proto__ === Function.prototype);
console.log(Object.prototype.__proto__ === null);
Function的显示原型和隐式原型相等的,以为javascript一切皆对象,所有对象的最终指向都是Object.prototype,而Object.prototype又最终指向了null。
记录记录!