js中实例对象的__proto__与构造器函数的prototype

有一个构造函数,名字叫做Person

function Person(name, age) {
  name = this.name,
  age = this.age
}

实例对象Mike由构造函数Person生成

const Mike = new Person('Mike', 18)

作为一个构造函数,他拥有prototype这一其他对象所没有的属性。

“方法这个特殊的对象,除了和其他对象一样有__proto__属性之外,还有自己特有的属性——原型属性(prototype),这个属性是一个指针,指向一个对象,这个对象的用途就是包含所有实例共享的属性和方法(我们把这个对象叫做原型对象)。原型对象也有一个属性,叫做constructor,这个属性包含了一个指针,指回原构造函数。”--摘自知乎用户

新建一个Person的prototype的属性

Person.prototype.sayName = function() {
  alert(this.name)
}
此时Mike拥有了sayName这一方法,如何找到这一方法?首先从Mike这一实例对象查找,并没找到(意思是也不存在于其构造函数Person中)。然后,从Mike的 隐式原型(__proto__)中寻找,找到了这个方法,并且调用Mike.sayName()。

PS: 对象具有属性__proto__,可称为隐式原型,一个对象的隐式原型指向构造该对象的构造函数的原型,这也保证了实例能够访问在构造函数原型中定义的属性和方法。

Mike.__proto__ === Person.prototype

并且

Person.prototype.constructor === Mike.constructor === Person


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值