- 檢索:
var obj = {
name: 'Jack'
}
訪問變量中屬性和方法
(1) obj.name
(2) obj['name'] ==> 如果 name 為JS中的關(guān)鍵字或保留字志秃,可以用這種方法訪問以保證不出錯
不過我們建議永遠禁止使用JS關(guān)鍵字或保留字命名變量
|| 運算符可以用來填充變量
obj.name = undefined;
var name = obj['name'] || 'wang'
name ==> 'wang'
obj.name ==> undefined
obj.name.age ==> throw "TypeError"
obj.name && obj.name.age ==> undefined //避免報錯
- 原型
所有通過對象字面量創(chuàng)建的對象都連接到Object.prototype竣灌,它是JS的標(biāo)配對象
原型關(guān)系是一種動態(tài)的關(guān)系姨涡。如果我們添加一個新的屬性到原型中回溺,該屬性會立即對所有基于該原型創(chuàng)建的對象可見
因為對象會先在自身查找是否有該方法,沒有的話,再去原型鏈查找。
var obj = {}
Object.prototype.name = "jack"
obj.name = 'jack';
枚舉
使用for in枚舉對象屬性,屬性名出現(xiàn)的順序是不確定的也祠,如果想確保屬性名以特定的順序出現(xiàn),最好的辦法就是完全避免使用for in語句近速,而是創(chuàng)建一個數(shù)組來遍歷诈嘿;刪除
delete 運算符可以用來刪除對象的屬性
var obj = {
name: 'jack '
}
delete obj.name
obj.name ==> undefined
刪除對象的屬性可能會讓來自原型鏈中的屬性透現(xiàn)出來
var obj = {
name : 'jack'
}
Object.prototype.name = 'pony';
delete obj.name;
obj.name ==> 'pony'
- 減少全局變量污染
全局變量削弱了程序的靈活性,應(yīng)該避免使用
最小化使用全局變量的方法之一就是為你的應(yīng)用只創(chuàng)建一個唯一的全局變量削葱;
var module = {
name: 'jack',
init: function(){
this.bindEvents();
},
bindEvents: function(){
getName: function(){
return name
}
}
}
永遠確保你的文件中只有module一個全局變量