原型 / 构造函数 / 实例/原型链

原型 / 构造函数 / 实例/原型链

原型( prototype ): ⼀个简单的对象,⽤于实现对象的 属性继承。可以简单的理解成对象 的爹。在 Firefox 和 Chrome 中,每个 JavaScript 对象中都包含⼀个
proto (⾮标准)的属性指向它爹(该对象的原型),可 obj.proto 进⾏访问。 构造函数: 可以通过 new 来 新建⼀个对象 的函数。 实例: 通过构造函数和 new 创建出来的对象,便是实例。 实例通过 proto 指向原
型,通过 constructor 指向构造函数。
以 Object 为例,我们常⽤的 Object 便是⼀个构造函数,因此我们可以通过它构建实例。
// 实例

//const instance = new Object()
// 
const instance = new Object()

则此时, 实例为 instance , 构造函数为 Object ,我们知道,构造函数拥有
⼀个 prototype 的属性指向原型,因此原型为:
// 原型

// 
const prototype = Object.prototype

实例.proto === 原型 原型.constructor === 构造函数 构造函数.prototype === 原型

// 
// 这条线其实是是基于原型进⾏获取的,可以理解成⼀条基于原型的映射线
// 例如: 
 const o = new Object()
 o.constructor === Object --> true
 o.__proto__ = null;
o.constructor === Object --> false
实例.constructor === 构造函数

另外提一下原型链:
原型链: 原型链是由原型对象组成,每个对象都有 proto 属性,指向了创建该对 象的构造函数的原型, proto 将对象连接起来组成了原型链。是⼀个⽤ 来实现继承和共享属性的有限的对象链 属性查找机制: 当查找对象的属性时,如果实例对象⾃身不存在该属性,则沿着原型链往上 ⼀级查找,找到时则输出,不存在时,则继续沿着原型链往上⼀级查找,直⾄最顶级的原 型对象 Object.prototype ,如还是没找到,则输出 undefined ; 属性修改机制: 只会修改实例对象本身的属性,如果不存在,则进⾏添加该属性,如果需要 修改原型的属性时,则可以⽤: b.prototype.x = 2 ;但是这样会造成所有继承于该对象 的实例的属性发⽣改变。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eugene.Tom.Lee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值