オブジェクトと配列 シンボル - 新しいプリミティブ 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
%