JavaScript的原型模式

2021-08-09 16:24:21 字數 1035 閱讀 3836

今天重新看了下高程的物件導向設計那一章(重點是看了原型模式),下面有三種建立物件的方法:

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繼承下來,乙個物件要實現轉殖,需要實現...