十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
小编给大家分享一下JavaScript借用构造函数继承的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
我们提供的服务有:网站设计制作、网站建设、微信公众号开发、网站优化、网站认证、未央ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的未央网站制作公司
借用构造函数继承是在子类型构造函数的内部调用超类型构造函数,通过使用apply()和call()方法
function girlFriend(){ this.girls = ['chen','wang','zhu']; } function Person(){ girlFriend.call(this,20); } var wang = new Person(); var zhu = new Person(); wang.girls.push('zhang'); console.log(wang.girls); //(4) ["chen", "wang", "zhu", "zhang"] console.log(zhu.girls); //(3) ["chen", "wang", "zhu"]
通过以上代码,我们可以发现,在原型链继承中出现的问题不再出现了,这个超类不会被子类所创建的实例共享了。
借用构造函数继承的优势是可以在子类型构造函数中向超类型构造函数传递参数,例如以下代码:
function SuperType(name){ this.name = name; } function SubType(){ SuperType.call(this,"nick"); this.age = 20; } var instance = new SubType(); console.log(instance.name); //nick console.log(instance.age); //20
借用构造函数继承的问题:用构造函数继承并不能继承到超类型原型中定义的方法,例如以下代码,在girlFriends构造函数的原型中添加sayHello方法:
girlFriend.prototype.sayHello = function(){ console.log('hello'); }
继承它的子类构造函数的实例并不能调用到这个sayHello方法,返回的值是undefined
看完了这篇文章,相信你对“JavaScript借用构造函数继承的方法”有了一定的了解,如果想了解更多相关知识,欢迎关注创新互联行业资讯频道,感谢各位的阅读!