今天爱分享给大家带来JS中原型和原型链的是什么,优缺点是什么【面试题详解】,希望能够帮助到大家。
原型: 每一个构造函数都会自动带一个 prototype 属性,是个指针,指向一个对象,就是 原型对象。
原型对象 上默认有一个属性constructor ,也是个指针,指向构造函数本身。
优点:原型对象上所有的 属性 和 方法 都能被构造函数的 实例对象 共享访问。
缺点:多个实例对引用类型的操作会被篡改。
因为每次实例化,引用类型的数据都指向同一个地址,所以它们 读/写 的是同一个数据,当一个实例对其进行操作,其他实例的数据就会一起更改( 这也是 Vue 中 data 为什么是一个函数的原因 )。
原型链: 每个实例对象都有一个原型__proto__,这个原型还可以有它自己的原型,以此类推,形成一个链式结构即原型链。
每个构造函数都有一个原型对象prototype,原型对象上包含一个指向构造函数的指针 constructor
而每个实例都包含着一个指向原型对象的内部指针 __proto__。
可以通过内部指针 __proto__访问到原型对象,原型对象通过 constructor 找到构造函数。
如果 A对象 在 B 对象的原型链上,可以说它们是 B对象继承了 A对象。
原型链作用:如果试图访问对象的某个属性,会首先在 对象内部 寻找该属性,直至找不到,然后才在该对象的原型里去找这个属性,以此类推。