起因
程序媛妹妹问我面试题,怎么好好的解释原型链(或许她问的什么是原型链),嘛!毕竟写vue都要理解这玩意捏。
理解
每一个对象都有自己的原型链,有自己的内置对象,有自己的prototype 和 proto 。
prototype 显式原型,指向一个构造函数 ** proto ** 隐式原型,是对象的属性
如果想从对象中查找某个值,如果没有找到他们就会从原型实例,向上查找,直到找到Object.prototype 为止。
示例解释
Object.prototype.abc = 222;
// 建立构造函数1
function Test1Fun() {}
// 构造函数中写入原型
Test1Fun.prototype.test = "111";
// 建立构造函数2
function Test2Fun() {}
// 将Test2Fun的原型对象指向一个Test1Fun的实例,实现原型链继承
Test2Fun.prototype = new Test1Fun();
// 创建一个Test2Fun的实例对象testObj
var testObj = new Test2Fun();
// 从原型链中查找 test
console.log(testObj.test);
// 从原型链中查找 abc
console.log(testObj.abc);
是否发现vue中 Vue是一个构造函数,我们经常在上面挂载原型,在所有地方都能方便使用