JavaScript中 apply/call 与面向对象语言中继承关系的联系和区别
来源:互联网 发布:洛克人网络争霸战粤语 编辑:程序博客网 时间:2024/05/21 17:03
如果对apply/call还没有一个大体的概念,请参考以下资料:
http://blog.csdn.net/myhahaxiao/article/details/6952321#reply
主要问题:apply是可理解为类的继承?
1.测试属性是否被继承
function people(name,age){ //属性 this.name=name; this.age=age; //方法 this.show=function(){ console.log("my name is"+this.name+" and I am "+this.age+" years old"); }; } function student(name,age,school){ people.apply(this,arguments); this.school=school; this.showYourself=function(){ console.log("my name is"+this.name+" and I am "+this.age+" years old"+" my school is"+ this.school); }; } var tom=new student('tom','19','xtu'); tom.showYourself();
程序结果
结论:属性可以正常继承
2.父类中的方法是否可以继承(暂时称呼为父类,并不准确)
调用tom.show();
方法
程序运行结果
结论:父类中的方法可以被正常继承
3.若子类中存在和父类同名的方法是否会被覆盖
在student
类中添加如下代码
this.show=function(){ console.log("hello");};
程序运行结果
结论:当子类中存在和父类同名的方法时,子类的方法会覆盖掉父类的方法即调用的为子类的show
方法
4.若父类和子类中含有同名方法,但参数个数不同,是否会重载
将子类student
中的show
方法改成如下形式
this.show=function(school){//添加了参数school console.log('hello '+school);};
父类people
中的show
方法不变。如下
this.show=function(){ console.log("my name is "+this.name+" and I am "+this.age+" years old");};
-不传入参数调用show方法tom.show();
运行结果如下
并未调用父类的无参数show
方法,因为没有传入参数,所以显示undefined。
- 传入一个参数调用show方法
tom.show();
运行结果如下
不解释,正常调用。
结论:若父类和子类中含有同名方法,但参数个数不同,同名方法不会被重载
综上,
联系有如下三点
- 可以继承父类属性
- 可以继承父类不同名方法
- 若父类和子类中存在同名方法,子类方法会覆盖父类方法
区别有一点
不存在重载,及如果子类中存在与父类同名的方法,不论参数个数是否一致,子类的实例都只会调用子类中的同名方法,父类中的同名方法将被隐藏,对于子类的实例来说不可见。
0 0
- JavaScript中 apply/call 与面向对象语言中继承关系的联系和区别
- javascript中apply()和call()方法的关系与区别
- JavaScript中apply(),call()的区别和关系
- JavaScript中apply()与call()的区别
- javascript 中apply 和call的区别
- Javascript 中 apply() 和 call() 的区别
- javascript中call()和apply()的区别
- javascript中apply()和call()的区别
- javascript 中 call() 和 apply() 的区别
- JavaScript中call和apply的区别
- javascript中call和apply的区别
- Javascript中call和apply的区别
- Javascript中call和apply的区别与详解
- Javascript中call和apply的区别与详解
- Javascript中call和apply的区别与详解
- Javascript中call和apply的区别与详解
- JavaScript中apply()、call()和bind()的相似与区别
- Javascript中call和apply的区别与详解
- 通过PHP调用天市数据的全国交通违章查询接口
- Pycharm调试器总篇
- C编程博客地址4
- Discuz!$_G变量的使用方法
- java.lang.NoClassDefFoundError: com.unionpay.sdk.UPAgent银联开发
- JavaScript中 apply/call 与面向对象语言中继承关系的联系和区别
- 布局神器display:table-cell
- Rxjava(创建类)--error
- Java虚拟机加载器
- C++读取文件夹下所有文件
- python 在字符串中使用变量的几种方法
- 一个农村孩子的大城市梦想之深入江湖!
- VPNService 一串错误代码
- @Scheduled注解 定时任务 cron表达式详解