計算機科学のブログ

オブジェクトと配列 新しいオブジェクトリテラル構文 簡略表記

入門JavaScriptプログラミング (JD Isaacks(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT2(オブジェクトと配列)、LESSON 12(新しいオブジェクトリテラル構文)、12.5(練習問題)、Q12-1の解答を求めてみる。

コード

function createStateManager() {
    const state = {};
    return {
        update(changes) {
            Object.assign(state, changes);
        },
        getState() {
            return Object.assign({}, state);
        },
        clearState() {
            for (const key of Object.keys(state)) {
                delete state[key];
            }
        },
    }
}

let stateManager = createStateManager();

console.log(stateManager);
console.log(stateManager.getState());
stateManager.update({ k1: 'v1', k2: 'v2' });
console.log(stateManager.getState());
stateManager.update({ k2: 'v3', k3: 'v4' });
console.log(stateManager.getState());
stateManager.clearState();
console.log(stateManager.getState());

入出力結果(Console)

% node sample1.js
{
  update: [Function: update],
  getState: [Function: getState],
  clearState: [Function: clearState]
}
{}
{ k1: 'v1', k2: 'v2' }
{ k1: 'v1', k2: 'v3', k3: 'v4' }
{}
%