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