NET, ASP.NET, AJAX, ASP.NET AJAX, JavaScript, WEB, WEB2.0, Neoking, Neoayi, Microsoft, SilverLight, CSS
代码改变世界

JavaScript - 原形[链] :Prototype

2007-09-15 17:03  黄明  阅读(177)  评论(0)    收藏  举报
继承这种形式在  ECMAScript 中原本是用于原形链的。
它以一种有趣的方式实现了继承机制

    prototype 对象是个模板,要实例化的对象都以这个为基础。
    prototype 对象的任何属性和方法都被传递给那个类的所有实例

Example

1 function classA()
2 {}
3 classA.prototype.color = "red";
4 classA.prototype.sayColor = function(){
5 alert(this.color);
6 }
7 function classB()
8 {}
9 classB.prototype = new classA();
注意:调用 classA 的构造函数时,没有给它传递参数。这在原形链中是标准做法。要确保构造函数没有任何参数。

来看看如何使用 prototype 来实现继承

1 function classB()
2 {}
3 
4 classB.prototype = new classA();
5 classB.prototype.name = "";
6 classB.prototype.sayName = function(){
7     alert(this.name);
8 }

在 ECMAScript 的弱类型世界中,这是及其有用的工具,但是实用对象冒充时 不能使用它.
弊端: 不支持多重继承. 原型链会用另一类型的对象重写类的 prototype 属性.