原型模式定义:
用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象.
Prototype模式:允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的细节,
工作原理是:通过将一个原型对象传给那个要发动创建的对象,这个要发动创建的对象通过请求原型对象拷贝它们自己来实施创建。
JavaScript的实现:
在Java语言中对象都继承自java.lang.Object,而java.lang.Object就提供了 Clone的方法,只要实现接口Cloneable,
即表示支持Clone,否则抛出异常。在这点JavaScript是非常接近的,所有的对象都是从 Object继承,
不过Object并不支持Clone的方法,但是我们可以通过自己对于JavaScript通过expanddo的形式实现Clone 方法,
这样日后所有的对象创建都实现了Clone方法。
1、为脚本环境内建对象添加方法:
程序代码:
Array.prototype.max = function()
{
var i, max = this[0];
for (i = 1; i < this.length; i++)
{
if (max < this[i])
max = this[i];
}
return max;
};
2、为用户自定义类添加方法:
程序代码:
function TestObject(name)
{
this.m_Name = name;
}
TestObject.prototype.ShowName = function()
{
alert(this.m_Name);
};
3、更新自定义类的prototype:
程序代码“
function TestObjectA()
{
this.MethodA = function()
{
alert('TestObjectA.MethodA()');
}
}
function TestObjectB()
{
this.MethodB = function()
{
alert('TestObjectB.MethodB()');
}
}
TestObjectB.prototype = new TestObjectA();
prototype还有一个默认的属性:constructor,是用来表示创建对象的函数的(即我们OOP里说的构造函数)。
constructor属 性是所有具有prototype属性的对象的成员。它们包括除Global和Math对象以外的所有JScript内部对象。
constructor属性 保存了对构造特定对象实例的函数的引用。
(未完待续。。。。。)