1 Object介紹
在JavaScript中Object是最基本,最常用小作,最強(qiáng)大的數(shù)據(jù)類型,也是面向?qū)ο缶幊痰幕A(chǔ)致份。在JavaScript的六種基本的數(shù)據(jù)類型中础拨,Object是唯一的復(fù)雜數(shù)據(jù)類型,唯一的可變數(shù)據(jù)類型滔蝉。一個(gè)Object就是一個(gè)基本數(shù)據(jù)類型以名稱值對(duì)存儲(chǔ)的無(wú)序列表塔沃。
2 Object創(chuàng)建
Object的創(chuàng)建方法有很多種,本文只介紹簡(jiǎn)單的字面值創(chuàng)建蛀柴,構(gòu)造模式。
2.1 字面值
最簡(jiǎn)單的Object創(chuàng)建方式吊洼。
var apple = {
name:"蘋果",
color:"紅色",
origin:["棲霞","臨猗"],
showDesc:function () {
console.log(this.name+"是"+this.color+"的");
}
};
2.2 構(gòu)造模式
對(duì)于應(yīng)用程序中只做簡(jiǎn)單的數(shù)據(jù)存儲(chǔ)制肮,字面值的創(chuàng)建方式非常的簡(jiǎn)單有效递沪。但是對(duì)于復(fù)雜的應(yīng)用時(shí)综液,比如我們需要構(gòu)建10種水果時(shí)谬莹,每種水果都有名稱,顏色届良,產(chǎn)地等圣猎,如應(yīng)用上述方式就需要重復(fù)多次創(chuàng)建對(duì)象。我們應(yīng)用構(gòu)造模式并引入水果(fruit)對(duì)象來(lái)解決上述問(wèn)題慢显。
function Fruit(theName,theColor,theOrigin) {
this.name = theName;
this.color = theColor;
this.origin = theOrigin;
this.showDesc = function () {
console.log(this.name+"是"+this.color+"的");
}
}
應(yīng)用這種方式欠啤,可以很方便的創(chuàng)建各種水果,如果需要改變水果的描述方法(showDesc)也只需要做一處改動(dòng)就好应狱。也可以新增自有方法和屬性祠丝。
var mango = new Fruit("芒果","黃色",["陵水","南寧"]);
//輸出 芒果是黃色的
mango.showDesc();
3 訪問(wèn)屬性
Object對(duì)象中的第一項(xiàng)都被稱為屬性(函數(shù)被稱為方法),一般來(lái)說(shuō)屬性值可以通過(guò)點(diǎn)號(hào)(.)或中括號(hào)([])加屬性名的方式獲得岸蜗。屬性名可以是字符串(String)也可以是數(shù)字(Number)叠蝇,但一般最好不要用數(shù)字做為屬性名稱,如果用數(shù)字做屬性名稱悔捶,只能采用中括號(hào)的方式訪問(wèn)屬性蜕该。
var ageGroup = {15:"兒童",60:"老人"};
//輸出 兒童
console.log(ageGroup["15"]);
//拋出 SyntaxError
console.log(ageGroup.15);
3.1 點(diǎn)號(hào)(.)
var people = {name:"iFat3",sex:"男"};
//輸出 iFat3
console.log(people.name);
3.2 中括號(hào)([])
var people = {name:"iFat3",sex:"男"};
//輸出 iFat3
console.log(people["name"]);
4 屬性存在與否判定
var people = {name:"iFat3",sex:"男"};
//輸出 true
console.log("name" in people);
//輸出 false
console.log("age" in people);
//輸出 true,繼承而來(lái)
console.log("toString" in people);
5 自有屬性判定
var people = {name:"iFat3",sex:"男"};
//輸出 true
console.log(people.hasOwnProperty("name"));
//輸出 false赁温,繼承屬性非自有屬性
console.log(people.hasOwnProperty("toString"));
6 訪問(wèn)并枚舉屬性
var people = {name:"iFat3",sex:"男"};
//輸出 name sex
for(var item in people) {
console.log(item);
}
7 刪除屬性
只能刪除自有屬性,不能刪除繼承屬性袜匿。
var people = {name:"iFat3",sex:"男"};
delete people.sex;
//輸出 undefined
console.log(people.sex);
delete people.toString();
//輸出 [object Object]
console.log(people.toString());
8 序列化和反序列化
使用JSON.stringify
函數(shù)來(lái)序列化對(duì)象稚疹,使用JSON.parse
函數(shù)來(lái)反序列化對(duì)象。
var people = {name:"iFat3",sex:"男"};
var peopleStr = JSON.stringify(people);
//輸出 string
console.log(typeof peopleStr);
//輸出 {"name":"iFat3","sex":"男"}
console.log(peopleStr);
var people2 = JSON.parse(peopleStr);
//輸出 object
console.log(typeof people2);
//輸出 iFat3
console.log(people2.name);
本文并未介紹JavaScript的原型屬性怪嫌,Prototype部分內(nèi)容較多會(huì)另做介紹柳沙。