JS原型与原型链

JS原型与原型链

  • 每个函数都有一个prototype属性,被称为显示原型JS原型与原型链

  • 构造函数
    -function Fn(){ } 大写表示构造函数

  • 每个实例对象都有一个的__proto__属性,被称为隐式原型

  • 每个函数都有constructor属性,指向他关联的构造函数

检测对象自身有没有属性的方法

  • hasOwnPrototype
  • isPrototype
  • 检测某个属性是否在这个实例上,返回的布尔类型的值,有的话则返回true,否则是fasle
  • 构造函数的原型prototype是由Object构造出来的
  • constructor可以检测数据类型,但是不准确,容易被篡改

原型链

  • 获取对象属性时,如果对象本身没有这个属性,那就会去他的原型__proto__上去找,如果还查不到,就去找原型的原型,一直找到最顶层(Object.prototype)为止。Object.prototype对象也有__proto__属性值为null。
  • 对象必然有_proto_属性,但不一定有prototype;实例的对象通过_proto_属性连接到构造函数的prototype属性上。而原型链就是从这两者的关系开始一层一层JS原型与原型链
    往下找的关系
上一篇:继承的多种方式及优缺点


下一篇:ES6学习(三)