r の hide プロパティを連想配列にしたいと思います (PHP のように)。それらは JavaScript には存在しません。配列には、数値でインデックス付けされた値があります。
r.head はオブジェクトなので (配列は JS のオブジェクトです)、それにプロパティを追加できますが、r.head["whatever property name"]="value"
JSON.stringify を使用するとこれらのプロパティは JSON にシリアル化されないようですr.head
。番号付きインデックス値をシリアル化します。
これを修正するr.head
には、JSON.stringify がすべてのプロパティをシリアル化するようにオブジェクトとして定義できます。
function request(url) {
this.url = url;
this.head = {};
}
var r = new request("http://test.com");
r.head["cookie"] = "version=1; skin=new";
r.head["agent"] = "Browser 1.0";
document.write(JSON.stringify(r));
コソールで次のコードを実行すると (ブラウザーで F12 キーを押す)、配列がオブジェクトと同じようにシリアル化されていないことがわかります。
var b = [];
b.something=22
console.log(b.something);
console.log(JSON.stringify(b));//=[]
console.log(b.hasOwnProperty("something"))//=true
b = {};
b.something=22
console.log(b.something);
console.log(JSON.stringify(b));//={"something":22}
console.log(b.hasOwnProperty("something"))//=true