比如odiv.num和odiv[num].的區(qū)別是什么
JS中 .和[]的區(qū)別是什么
起個名字有那么困難
2016-07-09 12:52:51
TA貢獻4條經驗 獲得超1個贊
odiv.num 可以理解為是一個靜態(tài)訪問對象的屬性(或者對象的方法),num 是一個變量名;
odiv[num] ?這個就是動態(tài)的訪問屬性(或者方法),[ ] 里面是一個字符串,
二者效果是一樣的,但是用法不同;
靜態(tài)的按變量名訪問,比較單一,不可以修改;
動態(tài)的可以用賦予字符串的方式訪問,靈活性更大,比較常見的是可以遍歷對象的屬性;
比如說?odiv 有width,height ?,color,opcity ,border 等等好多屬性;
用靜態(tài)的就會是這樣:?
odiv.width?; odiv.height; odiv.color; odiv.opcity; odiv.border?//只能這樣一個一個手寫;列舉出來,不能用for?之類的語句遍歷;因為odiv.num? ????????????//這個?num?不能修改,它是變量名
用動態(tài)的就會是這樣:
for(var?attr?in?odiv){ ???console.log(?odiv[attr]) } //全部都搞出來了?循環(huán)中?attr?會自動賦值成'width';'height'.....從而訪問到odiv?的屬性
用處就是既然能自動遍歷了,就可以賦值修改了;像Jquery 的
?$(odiv).css({
????width:xx,
????height:oo
})
就是用動態(tài)訪問的原理來實現(xiàn)的
TA貢獻101條經驗 獲得超107個贊
假設有一個對象:
odiv?=?{ ????num:?1 };
如果我要獲取其中的num的值,可以有兩種方式:
console.log(odiv.num);?//1 console.log(odiv["num"]);?//1
下面一種方式是錯的:
console.log(odiv[num]);??//報錯:Uncaught?ReferenceError:?num?is?not?defined
不知道這是不是你想問的。。
舉報