锁定老帖子 主题:Javascript 继承 (一)
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-12-31
最后修改:2009-01-06
关于继承前言到这里如果看完函数-》对象-》Prototype,已经能应用Javascript了。但是想用面向对象的思想来编程,还差一点,那就是继承。
Prototype Chaining
|
|
返回顶楼 | |
发表时间:2009-01-08
1.
# TwoDShape.prototype.constructor = TwoDShape; # Triangle.prototype.constructor = Triangle; 如果这两句不加的话,依次执行下来,那么执行到下面的语句,值是否是下面这样。 # var td = new TwoDShape(); # td.constructor//TwoDShape===========》//Shape # var s = new Shape(); # s.constructor//Shape============》//Shape 2. 1. function Shape(){} 2. // 扩展prototype 3. Shape.prototype.name = 'shape'; 4. Shape.prototype.toString = function() {return this.name;}; 5. function TwoDShape(){} 6. // 继承之前不要扩展prototype 7. TwoDShape.prototype = new Shape(); 8. TwoDShape.prototype.constructor = TwoDShape; 9. // 继承之后再扩展 10. TwoDShape.prototype.name = '2D shape'; 第10行,我感觉这个应该不是扩展,因为TwoDShape本身就有name属性,用的是TwoDShape里的name,不是Shape里的name,这句只是重新给TwoDShape里的name赋值罢了。 只是一些疑问,望楼主解答。。 |
|
返回顶楼 | |
发表时间:2009-01-08
1.
# TwoDShape.prototype.constructor = TwoDShape; # Triangle.prototype.constructor = Triangle; 如果这两句不加的话,依次执行下来,那么执行到下面的语句,值是否是下面这样。 # var td = new TwoDShape(); # td.constructor//TwoDShape===========》//Shape # var s = new Shape(); # s.constructor//Shape============》//Shape 2. 1. function Shape(){} 2. // 扩展prototype 3. Shape.prototype.name = 'shape'; 4. Shape.prototype.toString = function() {return this.name;}; 5. function TwoDShape(){} 6. // 继承之前不要扩展prototype 7. TwoDShape.prototype = new Shape(); 8. TwoDShape.prototype.constructor = TwoDShape; 9. // 继承之后再扩展 10. TwoDShape.prototype.name = '2D shape'; 第10行,我感觉这个应该不是扩展,因为TwoDShape本身就有name属性,用的是TwoDShape里的name,不是Shape里的name,这句只是重新给TwoDShape里的name赋值罢了。 只是一些疑问,望楼主解答。。 |
|
返回顶楼 | |
发表时间:2009-01-08
1.先看看这篇文章我们在讨论啊
http://xiayuanfeng.iteye.com/admin/blogs/307152 2.自我感觉用扩展是可以的啊。我是相对TwoDShape.prototype可能造成误会。。 谢谢提问。 |
|
返回顶楼 | |
浏览 2589 次