計算機科学のブログ

オブジェクトと配列 シンボル - 新しいプリミティブ well-knownシンボル、toPrimitiveプロパティ、URIクエリ文字列、シリアライズ、encodeURIComponent関数

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

コード

let obj = {
    k1: 'v1',
    k2: 10,
    k3: '&?!:=',
    k4: '日本語',
    [Symbol.toPrimitive]() {
        let keys = Object.keys(this),
            vals = Object.values(this);
        return keys.map(function (key, i) {
            let k = encodeURIComponent(key),
                v = encodeURIComponent(vals[i]);
            return `${k}=${v}`;
        }).join('&');
    }
};

console.log(`https://example.com/?${obj}`);

入出力結果(Console)

% node sample1.js
https://example.com/?k1=v1&k2=10&k3=%26%3F!%3A%3D&k4=%E6%97%A5%E6%9C%AC%E8%AA%9E
%