• ..

React Native

    値の列挙

    値を列挙する時は(場合にもよるかもしれませんが)Object.freezeを使うといいかもしれません。これを使うとそのオブジェクトの値は(そのままでは)上書きできないようにできます。

    また、これはIE9から使えて問題もないです。

    使い方

    単に引数に上書きを禁止したいオブジェクトを渡すだけです。また戻り値ではただのオブジェクトの用に使うことができます。

    Object.freeze({foo: 123})
    // {foo: 123}
    
    // `writable`が`false`に
    Object.getOwnPropertyDescriptor(Object.freeze({foo: 123}), 'foo')
    // {value: 123, writable: false, enumerable: true, configurable: false}
    
    // `Object.freeze`を使わないと`writable`が`true`
    Object.getOwnPropertyDescriptor({foo: 123}, 'foo')
    // {value: 123, writable: true, enumerable: true, configurable: true}

    上書きしようとしてもエラーにはならない

    エラーなどは起きませんが、値は元のままです。

    const obj = Object.freeze({foo: 123});
    obj.foo = 456;
    obj.foo // 123

    うっかり上書きする・される心配が減ります。