啥是原型,啥又是原型链

191 阅读1分钟

老铁,不如听我来唠唠~

原型

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

那么,上面两幅图我们可以理解为

原型链:隐式原型形成了一个链条叫原型链