JS原型链

本文详细探讨了JavaScript中原型链的工作原理,包括构造函数、原型对象及其实例之间的关系,讲解了不同继承方式的优缺点,并提供了判断原型和实例关系的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文转载于:猿2048网站https://www.mk2048.com/blog/blog.php?id=ii0cahj&title=JS%E5%8E%9F%E5%9E%8B%E9%93%BE

  原型链

  1. 每一个实例都有自己的原型,可以__proto__访问
  2. 构造函数,通过new创建实例
  3. 构造函数通过prototype指向原型对象
  4. 原型对象通过constructor指向构造函数
  5. 如下图所示:
    1159665-20180808125936597-1126586992.jpg
  6. 访问对象中的属性,如果不存在,那么会在原型中查找,如果还没有,继续在原型中查找

    继承

1 构造函数

function Parent(name) {
    this.name = name
}
function Child(age) {
    Parent.call(this);
    this.age = age
}

  

2 原型链

child.prototype = new Parent()
缺点:当存在引用类型的时候,一个实例数据的改变,另一个也会改变,例如 P1.friend = ['Jany', 'LiMINg'],当P1增加一个朋友,另外的实例也会增加。

3 组合继承

把公共数据放在Parent中,这样的话就不会公用一个引用类型

1 function Parent(name) {
2     this.name = [‘Jang’,‘Dany’]
3 }
4 function Child(age) {
5     Parent.call(this);
6     this.age = age
7 }
8 child.prototype = new Parent()

 

4 优化组合继承

function Parent(name) {
    this.name = [‘Jang’,‘Dany’]
}
function Child(age) {
    Parent.call(this);
    this.age = age
}
Child.prototype = Object.create(Parent.prototype)
Child.prototype.constructor = Child

  

判断原型和实例的关系

1. instance instanceof object,只要是原型链中的都可以
2. object.prototyoe.isprototypeoof(instance)
3. object.prototype.tostring.call(instance)

  

本文转载于:猿2048➯https://www.mk2048.com/blog/blog.php?id=ii0cahj&title=JS%E5%8E%9F%E5%9E%8B%E9%93%BE

转载于:https://my.oschina.net/u/4181724/blog/3093150

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值