獲取物件屬性的點方法和中括號法的區別

2021-08-11 20:22:57 字數 1336 閱讀 2530

今天寫題的時候遇到用點取不到物件這個問題,

題目大致是這個樣子

console.log($element);//

console.log(cachedata.columns[0])//branchid;

console.log(cachedata.columns[1])//chname;

console.log($element.branchid)//0003

console.log($element.chname)//哈哈哈

console.log($element.cachedata.columns[0])//語法錯誤

var firsttd = $element[cachedata.columns[0]];//正確

var secondtd = $element[cachedata.columns[1]];//正確

branchid 這個物件是不確定的,通過這個cachedata.columns[0]可以獲取對應的branchid ,類似於cachedata.columns[0] == branchid;這兩個是一樣的,但是在用點語法取值的時候是錯誤的,後來聽大神指導明白了原來物件是變數的時候不能用點語法來取值;

var obj = ;

var getname = obj.name;//點方法

var getage = obj['age'];//中括號法

console.log(getname);//列印結果:張三

console.log(getage);//列印結果:18

var obj = };
應該有同學注意到了吧,有個屬性名是數字,這個時候用點語法就會報錯,用中括號就可以:

console.log(obj.34);//語法報錯

console.log(obj['34']);//正常獲取到;

所以說,點語法和中括號法還是有區別的,根據查資料,結論如下:

1、中括號法可以用變數作為屬性名,而點方法不可以;

var obj = {};

obj.name = '張三';

var myname = 'name';

console.log(obj.myname);//

undefined,訪問不到對應的屬性

console.log(obj[myname]);//張三

2、中括號法可以用數字作為屬性名,而點語法不可以;

3、中括號法可以使用js的關鍵字和保留字作為屬性名,而點語法不可以(盡量避免在變數或者屬性中使用關鍵字或保留字);

**:

js中屬性點 和中括號 的關係。

本來這裡說的是 js 執行乙個字串形式函式的方法。但是呢看到乙個 window test 居然一下子轉不過彎來。這就尷尬了。不是說好了 和 其他都是 什麼的什麼 關係嗎?如 window.onload 表示 window 的載入事件。使用 function fn 定義了乙個函式,和使用 var fn...

物件用 來獲取屬性的注意點

今天寫 用 var strategies b function salary function bonus salary,strategy bonus.prototype.getbonus function var bos new bonus 500,a bos.getbonus 如果要呼叫某個屬性...

獲取物件屬性值的方法

方法1 require watir ie watir ie.new ie.goto def messlg value,re x ie.text field name value to s.each do d x.unshift d end0.upto x.length 1 do t s x t sp...