JS原型链

原型链图解

 
 
 
 
 

1. 原型链(图解)

  * 访问一个对象的属性时,

    *先在自身属性中查找,找到返回

    *如果没有, 再沿着__proto__这条链向上查找, 找到返回

    *如果最终没找到, 返回undefined

  * 别名: 隐式原型链

  * 作用: 查找对象的属性(方法)

2. 构造函数/原型/实体对象的关系(图解)

3. 构造函数/原型/实体对象的关系2(图解)

-->

 

 

 

  1. 函数的显示原型指向的对象默认是空Object实例对象(但Object不满足)

   */(自行练习)

 console.log(Fn.prototype instanceof Object) //

 console.log(Object.prototype instanceof Object) //

 console.log(Function.prototype instanceof Object) //

  /*

  2. 所有函数都是Function的实例(包含Function)

  */

 console.log(Function.__proto__===Function.prototype)

  /*

  3.Object的原型对象是原型链尽头

   */

 console.log(Object.prototype.__proto__) // null

 

 

5:原型链的作用:查找对象的属性或者方法

1. 读取对象的属性值时: 会自动到原型链中查找

2. 设置对象的属性值时: 不会查找原型链, 如果当前对象中没有此属性, 直接添加此属性并设置其值

3. 方法一般定义在原型中, 属性一般通过构造函数定义在对象本身上

  function Person(name,age) {

      this.name = name;

      this.age = age

    }

    var p1=new Person("TOM",18)//属性在原型还是在对象里面;

    console.log(p1)

//下图所是:Person函数的显示原型是一个Object对象(默认为空)

 

   function Person(name,age) {

      this.name = name;

      this.age = age

    }

    var p1=new Person("TOM",18)//

    console.log(p1)//对象有隐式原型属性

    console.log(Person)显示原型属性

 

 
原文地址:https://www.cnblogs.com/love-life-insist/p/9062939.html