編集:
あなたの実際の質問に答えるために(最初はコードに問題があると思っていました)、コードのa || {}
一部には「「a」を使用するか、「a」が定義されていない場合は新しい空のオブジェクト({})を使用してください」と書かれています。
アドバイス:
E.martin
JavaScript のオブジェクトはハード参照されないため、メソッドで a を返すことをお勧めします。結果を返さないと、メソッドに送信した元のオブジェクトが失われる可能性があります。
mergein
2 つのオブジェクトを連結するメソッドがあるとします。
function mergein(new_obj, old_obj){
for(var i in new_obj){
old_obj[i] = new_obj[i];
}
return old_obj;
}
元のメソッドがある場合、結果が返されると元のオブジェクトのキー/値が失われます。
E.martin = function (a) {
a = mergein({ api_url: "/somefolder/",
json_parameter: false,
channel_id: null,
after_response_hook: null},
a || {});
}
var b = {foo:'bar'};
var result = martin(b);
console.log(result['foo']); // error
オブジェクトを返すa
と、キー/値が追加された元のオブジェクトが返されます。
E.martin = function (a) {
return mergein({ api_url: "/somefolder/",
json_parameter: false,
channel_id: null,
after_response_hook: null},
a || {});
}
var b = {foo:'bar'};
var result = martin(b);
console.log(result['foo']); // 'bar'