原型链 【必须会】

原型链 【必须会】

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)

posted @ 2022-05-11 15:18  杨建鑫  阅读(54)  评论(0)    收藏  举报