es6中的對象的可計算的屬性名
阿新 • • 發佈:2017-10-10
closed 數組 key obj 方式 logs and ... blog
View Code
先簡單的啰嗦一下對象的屬性:
var obj = { a:2 }
要訪問obj中a的位置,方法:1. obj.a //2 2..obj ["a"] //2
var myObj = {}; myObj[3] = "tony"; myObj[true] = "walker"; console.log(myObj["3"]); //tony console.log(myObj["true"]); //walker
其實,在對象中屬性名永遠是字符串,如果使用 string 以外的其他值作為屬性名,那它首先會被轉換一個字符串。即使數字也不例外,雖然在數組下標中確實使用數字,但是在對象屬性名中數字會被轉換成字符串,所以不能搞混數組和對象中數字的用法。
可計算屬性名:
如果需要通過表達式來計算屬性名,這種obj [...]的屬性訪問方式就派上用場了,es6增加了可計算屬性名,可以在文字的形式中使用[]包裹一個表達式作為屬性名:
var name = "tony"; var obj = { [name + " and walker"] : "is friend" } console.log(obj["tony and walker"]); //is friend
我的一個代碼練習:
function domArr(a,b,num){ var arr = []; var json ={};if(a>b){ var c = a; a = b; b = c; } if(num>(b-a)){ num = (b-a) } while(Object.keys(json).length<num){ var count = Math.floor(Math.random()*b+a); json[count] = count; } return Object.keys(json); } console.log(domArr(2,15,5));
es6中的對象的可計算的屬性名