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

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