1. 程式人生 > >es6中的對象的可計算的屬性名

es6中的對象的可計算的屬性名

closed 數組 key obj 方式 logs and ... blog

先簡單的啰嗦一下對象的屬性:

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));
View Code

es6中的對象的可計算的屬性名