/**
  @author 程无衣
  关于在原型对象中属性被覆盖
  */
   
  Person(){}
   
  ={
  :Person,
  24
  }
   
  Person();
  20;
  //20
  /*输出的是实例的age属性
  说明Person原型对象的age属性被实例
  的age属性覆盖了
  */
   
  Person();
  //24
  输出的是Person的原型对象中的age属性
   
  //---------------------------------------------------------------------
   
  如果说构造函数中也有属性的话会怎么样呢?
  Person(){
  26;
  }
   
  ={
  :Person,
  24
  }
   
  Person();
  20;
  //20
  /*
  我们发现实例化后的属性没有受到影响,当需要age属性
  的时候,原型链首先还是在实例的属性中搜索这个age属性
  所以我们看到person2.age的值等于20
  */
   
  Person();
  //26
  构造函数定义的就是实例的属性,所以这里的person2的age属性是26
   
  delete person2.age;
  使用delete删除实例的属性
 

console.log(person2.age);//24

console.log(person2.name);//undefined

 

//正如期待的那样,实例的属性被删除后,在原型对象处搜索到了age属性

 

 总结:在js的原型中。属性的搜索顺序是从实例属性开始,没有,再沿着原型链找到原型对象。再没有,就返回未定义。

 下次加入继承再来看看是不是按照预期的实现链式查找。

未完待续

相关文章:

  • 2021-12-22
  • 2022-01-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-21
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-11
  • 2022-12-23
  • 2022-01-28
  • 2021-12-09
  • 2021-09-27
相关资源
相似解决方案