今天重新看了下高程的物件導向設計那一章(重點是看了原型模式),下面有三種建立物件的方法:
1.工廠模式:
function createobj(name, usefor)
return o;
}var book1 = createobj('高程', '催眠')
2.建構函式模式
function obj(name, usefor)
}var book1 = new obj('高程', '催眠')
var book2 = new obj('高程1', '催眠1')
3.原型模式
function obj(name, usefor)
obj.prototype.name = "高程";
obj.prototype.usefor= "催眠";
obj.prototype.sayname= function() ;
var book1 = new obj()
1.工廠模式的缺點是:我們每次都要new object出來,最後book1的物件型別就只有object,也就是我們無法進行物件的識別;
2.建構函式:雖然建構函式能讓我們知道book1的的物件型別是obj,當是其也有缺點,其缺點就是我們用這種方式建立出來的例項,他們的中的函式是不一致的,因為他們屬於不同的作用域鏈和識別符號;可以用下面例子做證明
console.log(book1.sayname == book2.sayname);
上面返回的是false;建立兩個相同作用的函式是沒有必要的,所以提在這裡;
3.原型模式:我們建立的每個函式都有prototype屬性的,而這個屬性指的是乙個物件,我們使用obj.prototype.fn = function()
這是相當於為prototype這個物件增加屬性,而且這個屬效能被所有由這個函式建立的例項給共享。所以當我們建立兩個例項時,並沒有建立兩個作用相同的fn函式,兩個例項用的還是obj.prototype的fn。
JavaScript原型模式
function campus location,name campus.prototype.information function var aaa new campus 廣州 中山大學 var bbb new campus 武漢 武漢大學 console.log aaa bbb console....
JavaScript 建立物件 動態原型模式
動態原型模式 動態原型模式將所有的資訊都封裝在建構函式中,通過在建構函式中初始化原型 僅在必要的條件下 又保持 了同時使用建構函式和原型的優點。即使可以通過檢查某個應該存在的方法是否有效,來決定是否需要初始化原型。例1 function person name,age if typeof this....
建立型模式 原型模式
使用原型例項指定建立物件的種類,並且通過轉殖這些原型建立新的物件 原理是將乙個原型物件傳給要發動建立的物件,該物件通過請求原型物件轉殖自己來建立過程 轉殖方法 public prototype clone jdk中為我們提供了轉殖的方法clone 從object繼承下來,乙個物件要實現轉殖,需要實現...