在这个使用hasOwnProperty的对象扩展程序中有一个错误,I'我不确定那个bug是什么,也不确定这个扩展

There is a bug in this object extender using hasOwnProperty, I'm uncertain what that bug is or where this extender

本文关键字:不确定 扩展 是什么 bug 有一个 hasOwnProperty 对象 程序 错误      更新时间:2023-09-26

下面的代码应该用bar扩展foo,任务是在这个片段中找到"bug",但就我的一生而言,我似乎找不到这个bug。我有什么东西不见了吗?在某些主要情况下,当用其他对象扩展对象时,此代码会中断?

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

可能是因为在两个对象中都有重复的键。扩展对象难道不能覆盖扩展对象的属性吗?

var foo = {a:1,b:"2",c:[3]}, bar = {c:"3",d:4,e:5.0};
var foo_bar = extend(foo,bar); //will result in {a:1,b:"2",c:"3",d:4,e:5.0};