JavaScript原型和原型链和constructor简述

2019-05-26  本文已影响0人  acsamson

所有对象都有自己的原型对象(prototype)。一方面,任何一个对象,都可以充当其他对象的原型;另一方面,由于原型对象也是对象,所以它也有自己的原型。因此,就会形成一个“原型链”(prototype chain)最终都可以上溯到Object.prototype Object.prototype对象有没有它的原型呢?回答Object.prototype的原型是null。null没有任何属性和方法,也没有自己的原型。因此,原型链的尽头就是null。

image

为什么要有原型

就是为了解决共享属性问题

同一个构造函数创建的实例之间是无法共享属性的

image image

判断对象是不是另一个对象的原型

什么是proto

他是对象的一个属性

instance.constructor.prototype === instance.proto

实例的构造者就是构造函数, 构造函数原型就是等于实例的原型

用来表示所继承的原型是谁

JavaScript 中任意对象都有一个内置属性 [[Prototype]] ,在ES5之前没有标准的方法访问这个内置属性,但是大多数浏览器都支持通过proto来访问

现在已经废弃

不推荐使用

解释下constructor

constructor类似双向链表的front修改原型的时候也要修改constructor

prototype对象有一个constructor属性,默认指向prototype对象所在的构造函数。

constructor属性的作用是,可以得知某个实例对象,到底是哪一个构造函数产生的。

image image image
上一篇下一篇

猜你喜欢

热点阅读