首页 > 代码库 > 面向对象中构造函数,原型对象和实例的关系图

面向对象中构造函数,原型对象和实例的关系图

 技术分享

总结

以下代码为例

function Person(){}

Person.prototype.c=function(){}

var p1=new Person();

var p2=new Person();

1、构造函数有一个prototype属性,(任何函数都有这个属性)这个属性表示原型对象

         Person.prototype

2、构造函数的原型对象有个consturctor属性,指向构造函数本身

         Person.prototype.constructor===Person

3、构造函数的原型对象中的属性(方法),可以被构造函数的实例所共享

         p1.c=p2.c=Person.prototype.c

4、构造函数的实例拥有一个__proto__属性,指向构造函数的原型对象

         p1.__proto__===Person.prototype

5、构造函数的实例可以访问到constructor属性,指向的是构造函数本身

         p1.constructor===Person

6、获取对象的某个属性,首先获取当前对象本身的属性,如果获取不到,就从原型对象中查找,一直找到原型链的顶端

         p1.m1

         p1.__proto__.m1

         p1.__proto__.__proto__.m1

         .......

7、设置对象的某个自有属性

         p1.m3="";

8、设置原型属性(构造函数的原型对象的属性),应该通过构造函数的原型对象来设置

         Person.prototype.m5=function(){}

 

面向对象中构造函数,原型对象和实例的关系图