原型 和 原型链

本文深入探讨了JavaScript中每个对象如何与另一个称为原型的对象相关联,解释了直接量创建的对象共享同一原型对象,以及通过new操作符创建的对象原型如何继承自构造函数的prototype属性。文章还详细阐述了Object.prototype的作用及所有内置构造函数的原型继承机制。
每一个js对象(null除外)都和另一个对象相关联。『另一个』对象就是我们熟知的原型,每一个对象都从原型继承属性。


所有通过对象直接量创建的对象都具有同一个原型对象,并可以通过js代码 Object.prototype 获得对原型对象的引用。通过关键字new和构造函数调用创建的对象的原型就是构造函数的 prototype属性的值。因此,同使用{}创建对象一样,通过new Object()创建的对象也继承自Object.prototype。同样,通过new Array()创建的对象原型就是Array.prototype,通过new Date()创建的对象的原型就是Date.prototype。


没有原型的对象为数不多,Object.prototype就是其中之一。它不继承任何属性。其他原型对象都是普通对象,普通对象都具有原型。所有的内置构造函数(以及大部分自定义的构造函数)都具有一个继承自Object.prototype的原型。例如,Date.prototype的属性继承自Object.prototype,因此由new Date()创建的Date对象的属性同时继承自Date.prototype和Object.Prototype。这一系列链接的原型对象就是所谓的『原型链』(prototype chain)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值