JavaScript如何借用构造函数继承
这篇文章主要介绍了JavaScript如何借用构造函数继承,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
借用构造函数继承是在子类型构造函数的内部调用超类型构造函数,通过使用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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
Ant Design Blazor 组件库的路由复用多标签页功能
在 Ant Design Blazor 组件库中实现多标签页组件的呼声日益高涨。于是,我利用周末时间,结合 Blazor 内置路由组件实现了基于 Tabs 组件的 ReuseTabs 组件,需要的朋友跟随小编一起看看吧2021-07-07
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
这篇文章主要介绍了JavaScript函数式编程(Functional Programming)组合函数(Composition)用法,结合实例形式分析了javascript函数式编程中组合函数的概念、原理、用法及操作注意事项,需要的朋友可以参考下2019-05-05
javascript 动态修改css样式方法汇总(四种方法)
为了达到某种特殊的效果我们需要用Javascript动态的去更改某一个标签的Css属性,如何动态修改css样式呢?面对这个问题,小编带领大家来解决javascript动态修改css样式,小伙伴们都快来学习吧2015-08-08


最新评论