您的位置:首页 > Web前端 > JavaScript

javascript中prototype方式面向对象编程注意事项

2015-02-03 16:46 246 查看
原文地址:http://www.hoverlees.com/blog/?p=1193

javascript的prototype在新对象创建时会复制这个类的prototype到新的实例,但要注意,它不会完全复制值是对象的属性,而是复制对象的指针。另一方面,这样可以达到面象对象中的静态变量效果。

如下面的示例代码所示:

这段代码咋一看,执行完成后所有对象inner.instanceNum都应该等于1,a的inner.invokeNum=1,b的是2,c的是3

而程序的真正输出是

Num:100 instanceNum:3 setNum:6

Num:200 instanceNum:3 setNum:6

Num:300 instanceNum:3 setNum:6

所以如果使用prototype方式的面向对象编程,在原型的定义里,属性的值不能是对象,否则它相当于标准面象对象里的静态变量了(但这正好是js的静态变量定义方式呢)

正确的方式应该是在构造函数里声明对象,如下

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: