原型与原型链
原型,每一个javascript对象(除null外)创建的时候,就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型中“继承”属性。
一,prototype
1,在JavaScript中,每个函数都有一个prototype属性,这个属性指向函数的原型对象。
2,prototype是函数和类才有的属性,实例对象是没有的
3,构造函数可以给prototype添加属性,该属性可以让全部该函数创建的实例对象共享
4,prototype的constructor指向其构造函数
function one(){} console.log(one.prototype.constructor===one)//true
function student(name){ this.name=name } student.prototype.state=1 class student2{ constructor(name){ this.name=name } } student2.prototype.state=2 let a1=new student(10) let a2=new student2(15) console.log(a1.state)//1 console.log(a2.state)//2
二,__proto__
1,每个非空对象(排除null)都会有该属性,这个属性会指向该对象的原型
function one(){} let item=new one() console.log(item.__proto__===one.prototype)
三,constructor
每个原型都有construcotr,指向关联的构造函数
四,最终指向
每个对象都有原型,每个原型也有原型,直到终点Object,这就构成了链条状,也就是所谓的原型链