原型 与 原型链

77 阅读1分钟

冴羽大佬GitHub学习总结:

function Person() {
}
var person = new Person();
person.name = 'Kevin';
console.log(person.name) // Kevin
  • Person 构造函数
  • person实例对象
  • Person.prototype 原型(对象), 每个函数都有一个 prototype 属性 函数的 prototype 属性指向了一个对象,这个对象正是调用该构造函数而创建的实例的原型
    • 每一个JavaScript对象(null除外)在创建的时候就会与之关联另一个对象,这个对象就是我们所说的原型,每一个对象都会从原型"继承"属性。 原型是否有属性指向构造函数或者实例呢?
  • constructor 指向实例倒是没有,但每一个原型都有constructor属性,指向构造函数。
    Person === Person.prototype.constructor
    person.constructor === Person.prototype.constructor 
    // 当获取 person.constructor 时,其实 person 中并没有 constructor 属性,当不能读取到constructor 属性时,会从 person 的原型也就是 Person.prototype 中读取,正好原型中有该属性
  • _proto_ 所有对象都有的属性(除了null),指向该对象的原型

image.png