JS-类, 原型链

1 通过函数创建一个对象

2 prototype

只有函数才有prototype这个属性,prototype指向实例对象的原型对象,通过同一个构造函数实例化的多个对象具有相同的原型对象。

typeof Person.prototype输出Object

访问原型对象的方式:

person1.constructor.prototype.attr;

Person.prototype.attr;

篡改Person的非prototype对象不会影响已经创建的person对象们

3 __proto__

__proto__属于对象

4 prototype、proto和constructor的三角关系

from:https://www.cnblogs.com/xiaohuochai/p/5721552.html

原型对象有一个constructor属性,指向该原型对象对应的构造函数(

对于实例对象p1:

(1)constructor属性: 继承原型对象Foo.prototype的constructor属性,也就是构造函数

(2)__proto__属性:指向原型对象Person.prototype

对于构造函数Person:

(1)constructor属性:Function

(2)__proto__属性:指向原型对象Function.prototype

(3)prototype属性:指向Person.prototype

对于原型对象prototype:

(1)constructor属性:具有constructor属性,会覆盖继承自原型对象Object.prototype的constructor属性

(2)_proto__属性:指向Object.prototype

注意:Function的constructor属性指向Function本身;

          Function的prototype指向Object.prototype

          Object.prototype的原型对象是null

For proto:

对于函数而言:Person/Object/Function------>Function.prototype------>Object.prototype------>null;

对于函数创建的实例变量:p1------>Person.prototype------>Object.prototype------>null;

对于直接创建的对象:p1------>Object.prototype------>null

For prototype:

Function------>Function.prototype

Object------>Object.prototype

Person------>Person.prototype

For Constructor:

Person/Object/Function----->Function

xxx.prototype------>xxx

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容