javascript物件建立

2021-09-24 17:36:04 字數 2909 閱讀 5342

1

var person = new

object();

2 person.name = "lea";

3 person.age = 26;

4alert(person.name)

5 alert(person["name"])

1

var person =

5 alert(person["my age"])

一般來說物件訪問屬性時使用點表示法,若屬性名包含會導致語法錯誤的字元或屬性名使用的是關鍵字或保留字,可以使用方括號表示法

以上兩種方法有明顯的缺點,就是使用同乙個介面建立多個物件,會產生大量的重複**

用函式封裝以特定介面建立物件的細節,抽象了具體函式建立的過程,返回帶有屬性和方法的物件

1

function

createperson(name,age)

8returno;9

}10var person1 = createperson("lea","26");

該方法雖然解決了**重複的問題,但卻沒有解決物件識別的問題,即知道該物件的型別

建立自定義的建構函式,從而定義自定義物件型別的屬性和方法,作為構造器函式首字母要大寫,通過建構函式建立的物件可以標識為一種特定的型別,這是建構函式模式勝過工廠模式的地方,缺點是每個方法都要在每個例項上重新建立一遍,即不同例項上的同名函式是不相等的,建構函式與其它函式的區別在於呼叫方式不同,任何函式只要通過new操作符來呼叫,就可以作為建構函式

1

function

person(name,age)7}

8var person1 = person("lea","26");//不使用new來呼叫時,就是普通函式,返回undefined

9var person2 = new person("lea","26");//使用new呼叫,返回乙個物件

其中person定義是沒有使用new,即將建構函式當成普通函式,person1就是person函式執行的返回值,這裡沒有返回值結果為undefined,person中的this指的就是window,屬性和方法都新增到window物件中,而person2是person的例項

每個函式都有乙個prototype(原型)屬性,這個屬性是乙個指標,指向乙個物件,包含由特定型別的所有例項共享的屬性和方法,使用原型模式可以讓所有的物件例項都共享它所包含的屬性和方法,即不在建構函式中定義物件例項的屬性和方法,而是將這些資訊直接新增到原型物件中,但是這會導致例項共享引用型別時(person中的friends),所有例項的值是一樣的,person1的friends新增字串以後,person2.friends中也相應新增,這並非我們所期望的

1

function

person()

4 person.prototype.name = "lea";

5 person.prototype.age = "26";

6 person.prototype.friends = ["lucy","lili"];

7 person.prototype.sayname = function

()10

var person1 = new

person();

11 person1.friends.push("jacy");

12alert(person1.friends)

13var person2 = new

person();

14 alert(person2.friends)

組合使用建構函式模式和原型模式,建構函式模式用於定義例項屬性,而原型模式用於定義方法和共享的屬性,這樣每個例項都有自己的例項屬性副本,同時又共享著方法的引用,最大的節省了記憶體

1

function

person(name,age)

6 person.prototype =11}

12var person1 = person("lea","26")

13var person2 = person("jackson","26")

14 person1.friends.push("jack");

15alert(person1.friends)

16 alert(person2.friends)

向person1.friends中新增的乙個新的字串,並不影響person1.friends

動態原型模式將所有的資訊都封裝在建構函式中,而通過在建構函式中初始化原型,又保持了同時使用建構函式和原型的優點

1

function

person(name,age);8}

9 }

寄生夠高函式模式的基本思想就是建立乙個函式,用來封裝建立物件的**,然後再返回新建立的物件

1

function

person(name,age)

8returno;9

}10var person = new person("lea","26");

11 person.sayname();

例項中通過person建立了乙個新物件,並以相應的屬性和方法初始化該物件,然後又返回這個物件,除了使用new操作符並把使用的包裝函式叫做建構函式之外,這個模式跟工廠模式其實是一樣的

所謂穩妥物件,指的是沒有公共屬性,而且其方法也不引用this物件,不使用new操作符呼叫建構函式,適合在一些安全的環境中或者在防止資料被其他應用程式改動時使用

1

function

person(name,age)

8returno;9

}10var person = person("lea","26");

11 person.sayname();

JavaScript建立物件

一 建立單個物件 方式一 object建構函式 var o new object o.key value 方式二 物件字面量 方式一和二缺點 使用相同的介面建立很多物件會產生大量重複 使用方式三解決 方式三 工廠模式 使用函式封裝以特定介面建立物件的細節 function createobject ...

JavaScript 建立物件

工廠模式抽象了建立具體物件的過程,能夠快速建立大量具有相似屬性及方法的物件。function createperson name,age,job obj.name name obj.age age obj.job job obj.sayname function return obj var per...

JavaScript 建立物件

function person var person new person 複製 使用關鍵字new建立新例項物件經過了以下幾步 1 建立乙個新物件,如 var person 2 新物件的 proto 屬性指向建構函式的原型物件。3 將建構函式的作用域賦值給新物件。也所以this物件指向新物件 4 執...