建構函式的幾種模式以及它們的特點

2021-10-07 02:36:18 字數 1298 閱讀 8941

建構函式

function person ()

}var man = new person(『mxx』, 18)

var woman = new person(『ali』, 26)

//具有相同的sayname方法 man和woman占用了不同的記憶體空間,所以浪費記憶體

console.log(man.sayname === woman.sayname) //列印為false

1.建構函式的擴張模式

function person ()

function sayname ()

var man = new person(『mxx』, 18);

var woman = new person(『ali』, 26);

//解決了建構函式的浪費記憶體問題,但又有新的問題:sayname為全域性物件被建構函式person占有,如果person需要使用很多這種函式,在全域性定義很多個,就會造成全域性空間汙染

console.log(man.sayname === woman.sayname) //列印為true

2.寄生建構函式模式

//建立乙個函式,該函式的作用僅是封裝建立物件的**,然後返回新建立的物件。

//除了使用new操作符並把使用的包裝函式叫做建構函式外,這個模式跟工廠模式一摸一樣。

//盡量不使用該模式

function person(name,age)

return o;

}var man = new person(『mxx』, 18);

var woman = new person(『ali』, 26);

//問題:1.定義了相同的方法,浪費記憶體空間

和 instanceof都沒有意義

console.log(man.sayname === woman.sayname) //列印為false

console.log(man.proto=== person.prototype)//列印為false

console.log(man instanceof person)//列印為false

3.穩妥建構函式模式

//沒有公共屬性,而且它的方法也不引用this物件

function person(name)

return o;

}//p1物件叫穩妥物件

var p1 = new person(『mxx』);

p1.sayname();

函式的幾種模式

一 工廠模式 在函式體內申明乙個物件,並且返回 function createperson name,age,job return o var person1 createperson nicholas 29,software engineer 二 建構函式 直接將屬性和方法賦給了this 物件 建...

C 類的幾種建構函式

假定類名 canytest 不羅嗦,直接看以下 預設構造 canytest 該建構函式不顯式寫出來 普通無參建構函式 canytest 普通有引數建構函式 canytest int nvalue canytest int nvalue 0 不能於無參構造同時使用,二義性 拷貝建構函式 canytes...

類,物件,以及它們的區別

1 類的概念 1.1類是對具有相似屬性和行為的一組物件的統一描述 1.2類是把各種不同型別的資料和對資料的操作組織在一起形成的使用者自定義的資料型別 如下 選單型別 一 建立乙個類固定寫法 public class 類名稱 規範 定義類的名稱時 1.類名稱由乙個或者多個英文單詞組成,每個單詞的首字母...