JS公式
对象._proto_ === 其构造函数.prototype
根公理
Object.prototype 是所有对象的(直接或间接)原型 加了一个直接或间接,所谓公理就是规定好的
函数公理
所有函数都是由Function构造的
任何函数._proto_ === Function.prototype
任何函数有Object/Array/Function
XXX的原型
{name:'frank'}的原型的意思是对象._proto__对应的对象是什么
{name:'frank'}的原型是Object.prototype
[1,2,3]的原型是Array.prototype
Object的原型是Function.prototype
解读
Object的原型是Object._proto_:对
Object的原型是Object.prototype:错
的原型 等价于 ._proto_
中文的原型无法区分._proto_和prototype,所以我们只能约定,原型默认表示._proto_,只不过._proto_正好等于某个函数的prototype
原型分两种:直接原型和间接原型
对于普通对象来说,Object.prototype是直接原型;
对于数组、函数来说,Object.prototype是间接原型
注意 Object.prototype和Object.prototype对象的区别
console.log(Object.prototype.__proto__ === null) //true
console.log(Function.prototype.__proto__ === Object.prototype) //true
console.log(f.__proto__ === Function.prototype) //true
console.log(Function.__proto__ === Function.prototype) //true
console.log(Array.prototype.toString.__proto__ === Function.prototype) //true
console.log(Object.__proto__ === Function.prototype) //true
console.log(Array.prototype === [].__proto__) //true
资料来源:饥人谷