JS小结

59 阅读1分钟

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

image.png

资料来源:饥人谷