以下內(nèi)容均為個(gè)人整理的觀點(diǎn),一個(gè)個(gè)字碼出來(lái)的,不喜勿噴
講了一天的課,我又來(lái)了
初學(xué)者很多人看到這段代碼的時(shí)候即寒,可能會(huì)有些許的疑惑,咦?哪個(gè)是正確的蒿叠?都有什么區(qū)別?
var exItem1 = obj.style.width;
var exItem2 = obj.style['width'];
var exItem2 = obj.style[width];
也就是訪問(wèn)對(duì)象的屬性時(shí)“ . ”和“ [ ] ”的區(qū)別
那首先問(wèn)一下蚣常,在 JS 中有幾種方法能獲取對(duì)象的屬性市咽?
答案是:獲取對(duì)象的屬性兩種方法,點(diǎn)操作符或者中括號(hào)操作符 (也可以稱作成員訪問(wèn))
請(qǐng)看以下案例:
<div id='content' style="width:100px;"></div>
<script>
var content = document.getElementById('content');
console.log(content.style.width);//'100px'
console.log(content.style['width']);//'100px'
</script>
在案例中抵蚊,我們看到施绎,兩種方法都能獲取style對(duì)象上的width屬性。
這兩種語(yǔ)法贞绳,在目前的書寫情況下是等效的谷醉。
那那那。冈闭。俱尼。你說(shuō)半天就這個(gè)?別著急N堋S霭恕!
說(shuō)的是個(gè)啥耍休?刃永??
-
中括號(hào)運(yùn)算符可以用字符串變量的內(nèi)容作為屬性名,點(diǎn)運(yùn)算符不能羊精。
<div id='content' style="width:100px;"></div>
<script>
//首先定義一個(gè)變量保存一會(huì)要獲取的屬性名
var biu = "width";
//使用中括號(hào)運(yùn)算符獲取 變量a保存的屬性名的值(注意變量不加引號(hào))
console.log(content.style[biu]);//'100px'
//如果使用 點(diǎn)操作符 獲取屬性斯够,那么獲取失敗
//因?yàn)槟惬@取的是style對(duì)象里的a屬性,把a(bǔ)當(dāng)成屬性名解析喧锦,而不是當(dāng)成變量a解析
console.log(content.style.biu);//空
</script>
-
中括號(hào)運(yùn)算符可以用純數(shù)字為屬性名读规。點(diǎn)運(yùn)算符不能。
var obj = {};
//如果給obj使用點(diǎn)操作符擴(kuò)展一個(gè) 數(shù)字或者數(shù)字開頭的屬性燃少,會(huì)報(bào)錯(cuò)
//報(bào)錯(cuò)內(nèi)容:Uncaught SyntaxError: Unexpected number
obj.2 = "hello";
console.log(obj.2);
var obj = {};
//給對(duì)象擴(kuò)展一個(gè) 屬性名為2 的屬性掖桦,值為world
obj[2] = "world";
//可以獲取到屬性名為2的屬性值
console.log(obj[2]);
有人說(shuō),開玩笑怎么會(huì)有屬性名為數(shù)字的對(duì)象喲供汛,那你可以了解一下類數(shù)組對(duì)象
所以枪汪,當(dāng)我們讀取obj對(duì)象的 name
屬性時(shí),有兩種正確寫法:
obj.name;
obj['name'];
當(dāng) name 被一個(gè)變量 a 保存起來(lái)的時(shí)候怔昨,我們想要通過(guò)變量 a
訪問(wèn)時(shí)雀久,只能這么寫:
obj[a];
所以按照書寫習(xí)慣總結(jié)一下:常量用點(diǎn),變量就用中括號(hào)
歡迎討論~
拜拜趁舀,晚安