关于prototype使用位置问题的讨论
来源:互联网 发布:linux shell for循环 编辑:程序博客网 时间:2024/05/20 17:25
问题贴:http://bbs.csdn.net/topics/390446362
new四部曲:
(1)创建一个新的对象,并让函数的 this 指针指向它;
(2)将函数的 prototype 对象的所有成员都赋给这个新对象,特别地:对象的__proto__ = 函数的prototype;
(3)执行函数体,对这个对象进行初始化操作;
(4)返回(1)中创建的对象
注意定义函数的时候这个函数是不会被执行的(个人比较容易搞错),在new时,先执行相关赋值,然后再执行构造函数。所以会出现第一次new后得到的对象没有继承指定的prototype的方法和属性(因为prototype还未重新赋值),第二次new就可以。看代码:
function View(){}View.prototype.a = function{alert("我是View的父类函数");}function switcher(){switcher.prototype = View.prototype;}s = new switcher();alert(s.a);s = new switcher();alert(s.a);
输出
那么要实现继承,解决办法是什么呢
方案一:
function View(){}View.prototype.a = function{alert("我是View的父类函数");}function switcher(){}switcher.prototype = View.prototype; // 外部执行s = new switcher();alert(s.a);s = new switcher();alert(s.a);
输出:
方案二:
function switcher(){this.__proto__ = View.prototype;}s = new switcher();alert(s.a);s = new switcher();alert(s.a);输出:
虽然两种方案效果一样,但是后者可以将语句放在函数内,这样更好,便于继承以及代码的耦合。
0 0
- 关于prototype使用位置问题的讨论
- 关于Javascript 的 prototype问题。
- 关于Javascript 的 prototype问题
- 关于Javascript 的 prototype问题。
- 关于Javascript 的 prototype问题
- 关于Javascript 的 prototype问题
- 关于prototype cell的问题
- 关于“形式化”问题的讨论
- 关于SAT问题的讨论
- 关于使用runtimeStyle属性问题讨论
- JS位置问题(讨论)
- 关于使用struts2与jsp时,使用prototype.js的$属性与jquery的$冲突问题
- 关于继承的问题的一些讨论
- 关于prototype和window.setInterval的使用
- 关于12球问题的讨论
- 关于12球问题的讨论
- 关于相机标定问题的讨论
- 关于hibernate效率问题讨论的整理
- Linux tar 压缩打包命令使用方法
- 3d数学基础-欧拉角转换与旋转矩阵或旋转矩阵转换成欧拉角-用C++代码实现
- iOS开发UI基础—13在UIImageView中添加按钮以及Tag的参数说明
- .NET 的 WCF 和 WebService 有什么区别?(转载)
- 【HDU】4322 Candy 【最小费用流——给每条边一个被流优先级】
- 关于prototype使用位置问题的讨论
- 2015-google I/O大会综述:Android M、Android Studio、云端测试工具
- 第八章习题
- 每日一个知识点--JS实现方法重载
- JAVA-6大设计原则
- 面试题15:输入一个链表,输出该链表中倒数第k个结点。
- 黑马程序员——网络编程
- 反向代理,正向代理
- VS2010 使用TeeChart绘图控件 - 之二 - 绘制图形(折线图,柱状图)