VisYang's Studio.

构造函数、原型对象、对象实例三者之间的关系 & 原型链

2016/01/23

构造函数、原型对象、对象实例三者之间的关系

构造函数有一个属性是prototype,prototype是原形对象-是一个对象它里面有一个constructor属性指向构造函数,prototype上所有成员都可以被实例对象所访问到,实例对象由构造函数产生,当你访问实例对象上的某个成员的时候,会先在自己身上找,若自己身上没有则(沿着proto)在原型对象prototype上查找;

prototype1
costructor是系统默认为构造函数提供的一个属性,它等价于构造函数本身,要注意的是–>如果重新赋值prototype则需要手动添加constructor:构造函数,否则,constructor属性就丢失了,为了程序的严谨性constructor最好补上,例子:

1
2
3
4
5
6
7
Person.prototype = {
constructor: Person,
f1: function () {
console.log('f1')
},
f2: function () {做事情}
}

构造函数:把普通数据定义到构造函数上

原型对象:把公用方法定义到原型对象上

实例对象:每一个实例对象都有一个指向构造函数.prototype的指向;

instanceof操作符用来判断实例对象是否是哪个构造函数产生的:

1
console.log(new Person() instanceof Person);

原型链

原型链就是对象属性的搜索访问机制
当你访问对象的某个成员的时候:
先在自己身上找,找到即返回使用,找不到,则沿着原型链向上查找,如果在上一个原型对象中找到,则返回使用,如果找不到,则继续沿着原型链查找,直到 Object.prototype 如果还找不到,则继续找 Object.prototype.proto ,这个时候发现 Object.prototype.proto 是 null,则停止查找,返回 undefined
prototype2

CATALOG
  1. 1. 构造函数、原型对象、对象实例三者之间的关系
  2. 2. 原型链