對象就是一種無序數(shù)據(jù)的集合,由若干個鍵對值(key-value)組成
定義一個對象
Object()==>{}
var obj=Object()==>{}
{}=={}獲取值
var company ={
name:'cjj',
age:3,
sayHello: function() {
console.log('hello word')
}
}
可以用.,
company.name==>"cjj"
company.age==>3
company.sayHello()==>hello word //訪問一個函數(shù),然后執(zhí)行函數(shù)
也可以用['']
`company['name']
新增屬性
company.addr = '重慶'company['business'] = '前端'`遍歷
for(var key in company){}key值的應(yīng)用
? 可以加引號也可以不加引號
? 必要的時候需要加引號
例如:
var o = {
'1p':"hello word"
'h w':"hello word",
'p+q':"hello word"
}
? 保留字不能作為鍵名使用
? 鍵名又稱為“屬性”,如果一個屬性值位函數(shù),通常把這個屬性稱為“方法”,可以像函數(shù)那樣調(diào)用。
var o = {
p:function(x){
return 2 *x;
}
};
o.p(1)// 2
- 不同變量名指向同一個對象,那么他們都是這個對象的引用,也就是說指向同一個內(nèi)存地址,修改其中一個變量,會影響到其他所有變量。
var o1 = {};
var o2 = o1;
o1 = 1;
o2 //{}
上面代碼中,o1和o2指向同一個對象,然后o1的值變?yōu)?,這時不會對o2產(chǎn)生影響,o2還是指向原來那個對象。
不能直接寫
{foo:123},直接寫瀏覽器不認(rèn)為是一個對象,因此不能這樣使用{foo:123}.foo,會返回一個錯誤,可以在對象外面加一個括號({foo:123}).foo,就可以訪問到123eval('foo:123') //123,eval可以把字符串當(dāng)成JS,在全局環(huán)境下運行。查看屬性
Object.keys
var o = {
key1:1,
key2:2,
};
Object.keys(o); //['key1,key2]
- 刪除屬性Delete
delete o.p刪除一個不存在的屬性,delete不報錯,而且返回true。