图形解析【原型链】相关概念
2019-08-04 本文已影响0人
Aniugel
一、原型链概念:
函数的原型对象(prototype
)
原型对象的构造函数(constructor
)
内部原型(_proto_
)
image.png
image.png
image.png
function Dog() {
this.name = 'tom';
}
var d = new Dog();
Dog.prototype.age = 20;
console.log('d.__proto__', d.__proto__)//实力的内部原型
console.log('Dog.prototype', Dog.prototype)//构造函数的原型对象
console.log('d.__proto__===Dog.prototype', d.__proto__ === Dog.prototype)//true 构造函数的原型对象
console.log('d', d)//实例
console.log('d.__proto__', d.__proto__.__proto__.__proto__)//null
js是基于原型的面向对象语言,也就是说所有对象都是基于原型上进行创建,而不像java和c#等语言是基于一个类型的模板创建。
函数都有prototype属性指向函数的原型对象。【只有函数根除外】
image.png
image.png
所有的对象都有proto属性(非标准属性,但是所有浏览器都实现了。【null除外】)
image.png
Object是构造函数,也是对象。Object的prototype是所有对象的根
image.png
Function是函数对象的构造函数。Function的原型对象是所有函数的根。而它的内部原型是Object的原型对象
image.png
总结构图:
image.png
可参考链接https://www.jianshu.com/p/4fa9f405b774