JS关于prototype的几点
2012-10-11 11:42
211 查看
function a() { var _name;//私有变量 a.StaticName = "staticAllen"; //静态变量 this.Name = "Allen"; //属性 this.Age = 23; this.getName = function(cName) { return cName; }; //方法 this.getAge = function(cAge) { return cAge; }; } a.prototype.externName = "externAllen"; a.prototype.externGetName = function(cExternName){ return cExternName; }; var fn = new a(); alert(fn.externName);
1. 原型继承法有两个缺陷,第一个是由于类的原型(prototype)实际上是一个Object的实例,它不能再次被实例化(它的初始化在脚本装载时已经执行完毕)。这么意思呢?我们知道在新建对象实例时,我们使用语句new ArrayList02(),这时我们可以看做JavaScript脚本引擎把prototype的一个浅拷贝作为this返回给类的实例(这里其实没有发生拷贝,只是利用浅拷贝这个概念来帮助理解),如果类没有附加任何原型属性和原型方法,那么就等于返回了一个new Object()实例。问题就出在这里了,由于new对prototype执行的是浅拷贝,如果prototype的原型属性里有对象类型的属性,那么就会造成共享对象实例的问题(类似于在传统OOP的类定义中使用了static修饰符来修饰了属性)。这个缺陷下面会有示例演示,避免的办法就是不要在基类中定义对象类型的属性,比如:
Array、Object和Date等。
相关文章推荐
- 关于JS中的constructor与prototype
- 【JavaScript】关于JS中的constructor与prototype
- 关于使用struts2与jsp时,使用prototype.js的$属性与jquery的$冲突问题
- 关于WebView同JS调用的几点实现
- 关于JS的几点TIPS
- 【推荐】关于JS中的constructor与prototype【转】
- 关于JS中的constructor与prototype
- 关于JS中的constructor与prototype
- 关于js的prototype属性
- 关于js的Array.prototype.slice.call
- 关于JS中的constructor与prototype
- js中关于prototype学习(2015年1月5号晚)
- 关于JS的prototype
- 关于JS中的constructor与prototype
- 【推荐】关于JS中的constructor与prototype【转】
- 关于js的Array.prototype.slice.call
- 【推荐】关于JS中的constructor与prototype【转】
- 关于js的prototype
- 关于JS中prototype的理解
- 关于js中的prototype