【知識點】obj.style[xxx]和obj.style.xxx

以下內(nèi)容均為個人整理的觀點,一個個字碼出來的,不喜勿噴

講了一天的課,我又來了

初學(xué)者很多人看到這段代碼的時候,可能會有些許的疑惑,咦?哪個是正確的?都有什么區(qū)別?

var exItem1 = obj.style.width;
var exItem2 = obj.style['width'];
var exItem2 = obj.style[width];

也就是訪問對象的屬性時“ . ”和“ [ ] ”的區(qū)別


那首先問一下,在 JS 中有幾種方法能獲取對象的屬性?
答案是:獲取對象的屬性兩種方法,點操作符或者中括號操作符 (也可以稱作成員訪問)
請看以下案例:

<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對象上的width屬性。
這兩種語法,在目前的書寫情況下是等效的。

那那那。。。你說半天就這個?別著急!?。?/p>

說的是個啥???

  • 中括號運算符可以用字符串變量的內(nèi)容作為屬性名,點運算符不能。
<div id='content' style="width:100px;"></div>
<script>
    //首先定義一個變量保存一會要獲取的屬性名
    var biu = "width";

    //使用中括號運算符獲取 變量a保存的屬性名的值(注意變量不加引號)
    console.log(content.style[biu]);//'100px'

    //如果使用 點操作符 獲取屬性,那么獲取失敗
    //因為你獲取的是style對象里的a屬性,把a當(dāng)成屬性名解析,而不是當(dāng)成變量a解析
    console.log(content.style.biu);//空
</script>
  • 中括號運算符可以用純數(shù)字為屬性名。點運算符不能。
var obj = {};
//如果給obj使用點操作符擴(kuò)展一個 數(shù)字或者數(shù)字開頭的屬性,會報錯
//報錯內(nèi)容:Uncaught SyntaxError: Unexpected number
obj.2 = "hello";
console.log(obj.2);
var obj = {};
//給對象擴(kuò)展一個 屬性名為2 的屬性,值為world
obj[2] = "world";
//可以獲取到屬性名為2的屬性值
console.log(obj[2]);

有人說,開玩笑怎么會有屬性名為數(shù)字的對象喲,那你可以了解一下類數(shù)組對象


所以,當(dāng)我們讀取obj對象的 name 屬性時,有兩種正確寫法:

obj.name;
obj['name'];

當(dāng) name 被一個變量 a 保存起來的時候,我們想要通過變量 a訪問時,只能這么寫:

obj[a];

所以按照書寫習(xí)慣總結(jié)一下:常量用點,變量就用中括號


歡迎討論~


拜拜,晚安
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容