14-json拡張

1426 ワード

1、属性の簡潔な表現
ES 6は、オブジェクトの属性およびメソッドとして変数および関数を直接書き込むことを可能にする.このような書くのはもっと簡潔だ.
const foo = 'geek';
const json1 = {
    foo,
    f() {
        return 'hello';
    }
}

function f(x, y) {
    return {
        x,
        y
    }
}

CommonJSモジュールは変数のセットを出力し、簡潔な書き方を使用するのに適しています.
let ms = {};
function getItem (key) {
    return key in ms ? ms[key] : null;
}
function setItem (key, value) {
    ms[key] = value;
}
function clear() {
    ms = {};
}
module.exports = { getItem, setItem, clear };

2、属性名式、メソッド名式
let propKey = 'foo';
let obj = {
    [propKey]: true,
    ['a' + 'bc']: 123,
    ['h' + 'ello'] () {
        return 'hello geek';
    }
}

3、メソッドのname属性
関数のnameプロパティを返します.オブジェクトメソッドも関数なのでnameプロパティもあります.2つの特殊な状況:bindメソッドが作成した関数で、name属性はboundに元の関数の名前を返す.Functionコンストラクション関数が作成した関数で、nameプロパティはanonymousを返します.
(new Function()).name // "anonymous"

var doSomething = function() {};
doSomething.bind().name // "bound doSomething"

オブジェクトのメソッドがSymbol値である場合、nameプロパティはこのSymbol値の説明を返します.
const k1 = Symbol('description');
const k2 = Symbol();
let obj = {
    [k1]() {},
    [k2]() {}
}
obj[k1].name;   // '[description]'
obj[k2].name;   // ''

参考リンク:チェン一峰ES 6チュートリアル
终わります!