call 和apply 的一个记录
2015-11-29 14:40
363 查看
<!doctype html> <html> <head> <title> call - apply for inherit </title> </head> <body> <script type="text/javascript"> function baseA() // base Class A { this.member = "baseA member"; this.showSelfA = function() { window.alert(this.member); } } function baseB() // base Class B { this.member = "baseB member"; this.showSelfB = function() { window.alert(this.member); } } function extendAB() // Inherit Class from A and B { baseA.call(this); // call for A baseB.call(this); // call for B } window.onload = function() { var extend = new extendAB(); extend.showSelfA(); // show A extend.showSelfB(); // show B } </script> </body> </html>
运行结果如下:
baseB member
baseB member
测试环境:Google Chrome
结果分析:
预期的结果,应该是输出 baseA member 和 baseB member,但实际输出却是 baseB member 和 baseB member
以这种方式去实现所谓的多继承,结果:相同的变量会被覆盖;
当然,我们也可以对上面baseA代码稍作修改,来验证我们调试分析的正确性:
function baseA() // base Class A { this.memberA = "baseA member"; // member改成memberA,以区分baseB中的member this.showSelfA = function() { window.alert(this.memberA); // 显示memberA } }
相关文章推荐
- Android学习笔记(二)
- ADT中运行Android程序出错
- Android压缩图片到100K以下并保持不失真的高效方法
- cocos2dx editbox优化
- Android APP一段时间无操作显示屏保
- 熟悉Objective—C
- Object-C,循环语句for,while,do-while
- Object-C,循环语句for,while,do-while
- Object-C,循环语句for,while,do-while
- UIWebView使用示例(一)
- Quick-cocos2dx容器层的使用
- (五)swift 中的图片管理(Images.xcassets的使用)
- Objective-C:swift、objective-c、C++、C混合编程
- 微信多客服开发
- RegAsm注册DLL组件使用jacob调用的问题com.jacob.com.ComFailException: Can't co-create object
- iOS textView的使用总结
- iOS开发之页面跳转
- android模拟器不能用键盘
- android底部弹出iOS7风格对话选项框(QQ对话框)--第三方开源之IOS_Dialog_Library
- iOS编程之道设计模式