原型模式定義:
用原型實例指定建立對象的種類,而且經過拷貝這些原型建立新的對象.java
Prototype模式:容許一個對象再建立另一個可定製的對象,根本無需知道任何如何建立的細節,函數
工做原理是:經過將一個原型對象傳給那個要發動建立的對象,這個要發動建立的對象經過請求原型對象拷貝它們本身來實施建立。this
JavaScript的實現:spa
在Java語言中對象都繼承自java.lang.Object,而java.lang.Object就提供了 Clone的方法,只要實現接口Cloneable,prototype
即表示支持Clone,不然拋出異常。在這點JavaScript是很是接近的,全部的對象都是從 Object繼承,對象
不過Object並不支持Clone的方法,可是咱們能夠經過本身對於JavaScript經過expanddo的形式實現Clone 方法,繼承
這樣往後全部的對象建立都實現了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屬性 保存了對構造特定對象實例的函數的引用。
(未完待續。。。。。)