老铁,不如听我来唠唠~
原型
1. 原型:每个函数都会自动附带一个属性prototype,这个属性的值是一个普通对象,称之为 原型对象。
2. 隐式原型:每个实例都拥有一个特殊的属性**__proto__**,称之为隐式原型,它指向构造函数的 原型。
实例
1.实例:通过new产生的对象称之为实例。
问?这些都能干啥
答:当我们访问实例成员时,先找自身,如果不存在,会自动从隐式原型中寻找。这样一来,我们可以把那些公共成员,放到函数的原型中,即可被所有实例共享。
原型链
所有的对象都是通过new来创建
//构造函数Programmer
function Programmer(name,age) {
this.name = name
this.age = age
intrdouce:function() {
console.log(`我叫${name},今年${age}岁。`)
}
}
//实例1
var p1 = new Programmer('lingyun','20')
//实例2
var p2 = new Object()
p2.name = 'zhuangzhi'
p2.age = '18'
两种是实例是采用不同的创建方式,关系可以理解为(如图)
同时,我们也知道Object.prototype.__proto__比较特殊,固定指向null
那么,上面两幅图我们可以理解为
原型链:隐式原型形成了一个链条叫原型链