ES6系列文章 對象字面量

http://oka16ee7n.bkt.clouddn.com/object_literal.png

ECMAScript6使得聲明對象字面量更加簡單,提供了屬性簡寫和方法簡寫功能,屬性名計算的新特性。es6

function getInfo(name, age, weight) {
    return {
        // 若是屬性名和屬性值同名能夠利用、es6的屬性簡寫
        name,  // 等同於 make: make
        age, // 等同於 model: model
        weight, // 等同於 value: value

        // ES6的屬性名是可計算的
        ['over' + weight]: true,

        // 對象方法名簡寫能夠省略 function 關鍵字
        descripte() {
            console.log(name, age, weight);
        }
    };
}

let person = getInfo('Kia', 27, 400);
console.log(person);// {name: "Kia", age: 27, weight: 400, over400: true, descripte: ƒ}

若是能夠理解上述三個新特性,能夠沒必要往下閱讀。下面的文字僅提供給還有疑問的朋友。函數

屬性簡寫

在 ES5及之前的版本中,對象字面量只支持鍵值對集合。實際業務中,對象字面量的初始化會有必定的代碼重複。this

//ES5
function createPeople(name, age) {
    return {
        name: name,
        age: age
    };
}

createPeople函數用來建立一個People的對象,能夠看到上面的代碼的 nameage分別書寫了兩次,有些麻煩。在ES6中經過使用屬性簡寫特性能夠消除這種屬性名稱和局部變量之間的重複書寫,當對象的屬性和變量同名時,能夠沒必要再寫冒號和值。spa

function createPeople(name, age) {
    return {
        name,
        age
    };
}

方法名簡寫

ES5中若爲對象添加方法必須指定方法名稱,並完整地定義函數來實現。3d

var people = {
    name: 'xixi',
    sayName: function () {
        console.log(this.name);
    }
};

ES6的語法更簡潔,消除了冒號和方法名。code

let people = {
    name: 'xixi',
    sayName() {
        console.log(this.name);
    }
};
people.sayName();// xixi

屬性可計算

let lastName = 'last name';
let person = {
    [lastName]: 'yuan'
};
console.log(person[lastName]);// yuan

總結

對象字面量擴展的3個新特性介紹完畢,你們能夠回到文章開頭檢查一下本身是否掌握了本小結內容。對象

refs

深刻理解ES6
learning-es6-enhanced-object-literalsblog

相關文章
相關標籤/搜索