原型链 【必须会】
原型链 【必须会】
1. 原型是干什么的?
解决new不能共享对象的属性或者方法==》原型可以共享属性和方法
2. 谁有原型
每一个函数都有prototype 【系统内置】
每一个对象都有__proto__
3. 构造函数和构造出来的new对象有什么关系
new 对象是构造函数实例出来的,构造函数的prototype原型 和 new 对象的__proto__
原型是同一个
4. 什么是原型链
把原型连起来,形成一个原型的链条
5. 对象查找某个属性或者方法的规则(顺序)
先在对象本身找==》构造函数中找===》对象原型中找==》构造函数的原型中找==》对象的原型的原型中找==》对象的原型的原型的原型中找....===》null (对象找不到属性或者方法返回的是undefined)
6. 原型链最顶端是null
prototype(原型)==》可以叫做 属性 | 对象
constructor 叫做构造 obj.constructor 谁构造了obj ==> fun
例子:
function Fun(){ this.run = '1' } Fun.prototype.run = '2' var obj1 = new Fun(); obj1.run = '3'; obj1.__proto__.run='4'; Object.prototype.run = '5'; console.log( obj1.run ); 3 => 1=> 4=> 2=> 5 => undefined
对应 第五点
先在对象本身找==》构造函数中找===》对象原型(__proto__)中找==》构造函数的原型中(prototype)找==》对象的原型的原型中(Object.prototype)找==》对象的原型的原型的原型中找....===》null (对象找不到属性或者方法返回的是undefined)
本文来自博客园,作者:杨建鑫,转载请注明原文链接:https://www.cnblogs.com/qd-lbxx/p/16258068.html

浙公网安备 33010602011771号