次のコードはfooをbarで拡張することになっています。このスニペットでは "bug"私の人生のために、私はバグを見つけることができない。私は行方不明のものがありますか?他のオブジェクトでオブジェクトを拡張するときに、このコードが壊れる大部分のケース?hasOwnPropertyを使ってこのオブジェクトエクステンダーにバグがあります。そのバグが何であるか不明確です。このエクステンダ
var foo = {a:1,b:"2",c:[3]}, bar = {d:"3",e:4,f:5.0};
var extend = function (obj, extension) {
if (typeof obj === "object" && typeof extension === "object") {
for (var i in extension) {
if (extension.hasOwnProperty(i) && !obj.hasOwnProperty(i)) {
obj[i] = extension[i];
}
}
return obj;
}
}
var foo_bar = extend(foo,bar);
console.log(foo_bar); //this logs as expected
非オブジェクトを渡している場合、関数は何も返さず、エラーもトリガーしません。 – deceze
@ deceze - これは* undefined *を返します。これは妥当と思われます。 – RobG