Prototype原型模式

原型模式定义:
用原型实例指定建立对象的种类,而且经过拷贝这些原型建立新的对象.java

Prototype模式容许一个对象再建立另一个可定制的对象,根本无需知道任何如何建立的细节,函数

工做原理是:经过将一个原型对象传给那个要发动建立的对象,这个要发动建立的对象经过请求原型对象拷贝它们本身来实施建立。this

 

JavaScript的实现:spa

   在Java语言中对象都继承自java.lang.Object,而java.lang.Object就提供了 Clone的方法,只要实现接口Cloneable,prototype

即表示支持Clone,不然抛出异常。在这点JavaScript是很是接近的,全部的对象都是从 Object继承,对象

不过Object并不支持Clone的方法,可是咱们能够经过本身对于JavaScript经过expanddo的形式实现Clone 方法,继承

这样往后全部的对象建立都实现了Clone方法。接口

 
    由于JavaScript自己没有提供Clone的方法,同时对于对象的赋值如var a=new Object();var b=a,这样的代码a,b是指向同一对象的,
要建立一个对象必须经过new 这个关键字来实现,所以在Clone的实现过程,我内部定义了一个构造子(constructor)CloneModel,
同时指定其父对象为要进行Clone活动自己的对象,所以使用了this关 键字,在咱们定义的构造子CloneModel的基础上咱们建立一个一个对象,
由于构造子内部没有任何代码,新建立的对象实际上说全部的实现都在父对象 中,也就是咱们须要进行Clone的对象。到目前为止,
咱们已经建立了一个须要复制的对象,可是全部的值都是指向父对象的。
 
 

一、为脚本环境内建对象添加方法:ip


程序代码:
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;
};原型

 

二、为用户自定义类添加方法:

程序代码:
function TestObject(name)
{
this.m_Name = name;
}

TestObject.prototype.ShowName = function()
{
alert(this.m_Name);
};

三、更新自定义类的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属性 保存了对构造特定对象实例的函数的引用。

 

(未完待续。。。。。)

相关文章
相关标签/搜索