JavaScript 的继承机制----对象冒充

本文详细介绍了JavaScript中五种实现继承的方式:对象冒充、原型链、call方法、apply方法及原型链与对象冒充的结合,并对比了它们的特点与限制。

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

      继承机制,说到继承,就要想到从基类开始,但是JavaScript中的类有两大类:一,内嵌的;二,用户自定义;一般前者不会被用来做基类,原因是为了保障js的安全。但是我们可以通过prototype来对基类进行扩充,增加我们想要的属性和方法。以下是自己对继承的几种方式的理解。

1>  对象冒充,是JavaScript 和 ECMAScript实现继承的方法,在学习对象冒充实现继承前我们的先了解关键字 this 的使用,例如:

         

 

2>继承机制的实现方式: 

    NO1:对象冒充

         对象冒充的原理:函数classA通过this来初始化属性和方法,如果用函数classB的this冒充classA的this去执行,则就会使classB具有classA的属性和方法。例如

        

        注意:对象冒充是所有继承的前提,冒充只能使子类继承基类中的属性和方法,对基类prototype中的属性和方法是不可见的。也可以实现多重继承。

    NO2:原型链

         原型链,是继承的另一种方式,它不是通过对象冒充来实现的,而是改变prototype指针的指向来实现的。不过在运行时也参杂着对象冒充,例如:

            

        注意:原型链不可以实现多重继承,且在实例化新的命名空间的时候不可以带参数。

 

    NO3:call方法

        call(this,argument),此方法是函数对象的方法(classA.call),且两个参数:参数一,this代表的是当前对象;参数二,是实例化的参数,只能是单个的。

       

       注意:之所以会报错主要以因为prototype中的属性和方法通过call方法是继承不下来的,apply方法也一样,唯一的区别就是参数二的类型不同

    NO4:apply方法

        与call方法类似,具体如:

         

 

 NO5:原型链 && 对象冒充

      这种模式是原型链和对象冒充的结合,同构对象冒充来继承函数对象中的属性和方法,函数原型中的属性和方法则用原型链来实现。看起来非常清楚,但是值得注意的是,原型链在构建对象时是不带参数的,具体如:

     

 

总结:通过以上几种方式多可以实现在Javascript中的继承,只有原型链这种方式不然实现多继承,但其优点在于classB的任何对象多属于classA,classB这两个类。

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值