たぶん書き方が悪いだけだと思いますが、不可解な現象に出くわしたのでメモ。
実装したコード
JavaScript
var API = API || {};
API.getRequestBody = function() {
var body = {
"customer" : {
"companyName" : {
"kanji" : Data.customer.companyName.kanji,
"kana" : Data.customer.companyName.kana
}
}
};
return body;
}
var Data = Data || {};
Data.customer = {};
Data.customer.companyName = {};
Data.customer.companyName.kanji = '株式会社○○';
Data.customer.companyName.kana = 'カブシキガイシャマルマル';
console.log(Data);// 1
var body = API.getRequestBody();
console.log(body);// 2
var customer = {
"companyName" : {
"kanji" : 'あああああああああああああ',
"kana" : 'いいいいいいいいいいいい'
}
};
console.log(customer);// 3
customer.companyName.kanji = 'xxxxxxxxxxxxxxx';
customer.companyName.kana = 'yyyyyyyyyyyyyyy';
body.customer = customer;
console.log(body);// 4
var body = API.getRequestBody();
console.log(body);// 5
console.log()の出力結果
console.log()の後ろにコメントで番号を振ってあります。
それぞれの出力結果を御覧ください。
1
consoel.log()
customer : {
companyName : {
kana : "カブシキガイシャマルマル",
kanji : "株式会社○○"
}
}
まぁ、想定通りですね。
2
consoel.log()
customer : {
companyName : {
kana : "yyyyyyyyyyyyyyy",
kanji : "xxxxxxxxxxxxxxx"
}
}
えぇっ!?何で書き換わってるんですか?下の行はまだ実行されてませんよね??
3
consoel.log()
customer : {
companyName : {
kana : "yyyyyyyyyyyyyyy",
kanji : "xxxxxxxxxxxxxxx"
}
}
えぇっ!?変数宣言しただけなのに何で書き換わってるんですか??
4
consoel.log()
customer : {
companyName : {
kana : "yyyyyyyyyyyyyyy",
kanji : "xxxxxxxxxxxxxxx"
}
}
まぁ、想定通りですね。
5
consoel.log()
customer : {
companyName : {
kana : "カブシキガイシャマルマル",
kanji : "株式会社○○"
}
}
えぇっ!?何で戻っちゃったんですか??
まとめ
JavaScript難しすぎる…。