對(duì)象概述
- javascript中的對(duì)象(物體),和其他編程語(yǔ)言中的對(duì)象一樣誉尖,可以比照現(xiàn)實(shí)生活中的對(duì)象(物體)來(lái)理解它罪既。javascript中對(duì)象(物體)的概念可以比照現(xiàn)實(shí)生活中實(shí)實(shí)在在的物體來(lái)理解。
在javascript中铡恕,一個(gè)對(duì)象可以是一個(gè)單獨(dú)的擁有屬性和類型的實(shí)體琢感。我們拿它和一個(gè)杯子做下類比。一個(gè)杯子是一個(gè)對(duì)象(物體)探熔,擁有屬性驹针。杯子有顏色,圖案诀艰,重量柬甥,由什么材質(zhì)構(gòu)成等等。同樣其垄,javascript對(duì)象也有屬性來(lái)定義它的特征苛蒲。
對(duì)象和屬性
- 一個(gè) javascript 對(duì)象有很多屬性。一個(gè)對(duì)象的屬性可以被解釋成一個(gè)附加到對(duì)象上的變量绿满。對(duì)象的屬性和普通的 javascript 變量基本沒什么區(qū)別臂外,僅僅是屬性屬于某個(gè)對(duì)象。屬性定義了對(duì)象的特征(譯注:動(dòng)態(tài)語(yǔ)言面向?qū)ο蟮镍喿宇愋?。你可以通過(guò)點(diǎn)符號(hào)來(lái)訪問(wèn)一個(gè)對(duì)象的屬性漏健。
和其他 javascript 變量一樣嚎货,對(duì)象的名字(可以是普通的變量)和屬性的名字都是大小寫敏感的。你可以在定義一個(gè)屬性的時(shí)候就給它賦值蔫浆。例如殖属,我們創(chuàng)建一個(gè)myCar的對(duì)象然后給他三個(gè)屬性,make克懊,model忱辅,year七蜘。具體如下所示:
var myCar = new Object();
myCar.make = "Ford";
myCar.model = "Mustang";
myCar.year = 1969;
對(duì)象中未賦值的屬性的值為undefined(而不是null)谭溉。
對(duì)象有時(shí)也被叫作關(guān)聯(lián)數(shù)組, 因?yàn)槊總€(gè)屬性都有一個(gè)用于訪問(wèn)它的字符串值。
myCar["make"] = "Ford";
myCar["model"] = "Mustang";
myCar["year"] = 1969;
枚舉一個(gè)對(duì)象的所有屬性
- 從ES5開始橡卤,有三種原生的方法用于列出或枚舉對(duì)象的屬性扮念。
- for...in循環(huán):該方法訪問(wèn)一個(gè)對(duì)象及其原型鏈中所有可枚舉的屬性。
+Object.keys(o):該方法返回一個(gè)對(duì)象o自身包含
+Object.getOwnPropertyNames(o):該方法返回一個(gè)數(shù)組碧库,它包含了對(duì)象o所有擁有的屬性(無(wú)論是否可枚舉)的名稱柜与。
- for...in循環(huán):該方法訪問(wèn)一個(gè)對(duì)象及其原型鏈中所有可枚舉的屬性。
創(chuàng)建新對(duì)象
使用對(duì)象初始化器
var myHonda = {color: "red", wheels: 4, engine: {cylinders: 4, size: 2.2}};
使用構(gòu)造函數(shù)
- 通過(guò)創(chuàng)建一個(gè)構(gòu)造函數(shù)來(lái)定義對(duì)象的類型。首字母大寫是非常普遍而且很恰當(dāng)?shù)膽T用法嵌灰。
- 通過(guò)new創(chuàng)建對(duì)象實(shí)例弄匕。
function Car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
var mycar = new Car("Eagle", "Talon TSi", 1993);
使用Object.create方法
- 對(duì)象也可以用Object.create()方法創(chuàng)建。該方法非常有用沽瞭,因?yàn)樗试S你為創(chuàng)建的對(duì)象選擇其原型對(duì)象迁匠,而不用定義一個(gè)構(gòu)造函數(shù)。
// Animal properties and method encapsulation
var Animal = {
type: "Invertebrates", // Default value of properties
displayType : function() { // Method which will display type of Animal
console.log(this.type);
}
}
// Create new animal type called animal1
var animal1 = Object.create(Animal);
animal1.displayType(); // Output:Invertebrates
// Create new animal type called Fishes
var fish = Object.create(Animal);
fish.type = "Fishes";
fish.displayType(); // Output:Fishes
繼承
- 所有的JavaScript對(duì)象繼承于至少一個(gè)對(duì)象驹溃。被繼承的對(duì)象被稱作原型城丧,并且繼承的屬性可通過(guò)構(gòu)造函數(shù)的prototype對(duì)象找到。