Javascript 如何检查一个对象的属性名是否存在于另一个对象中?

Javascript 如何检查一个对象的属性名是否存在于另一个对象中?,javascript,object,for-in-loop,Javascript,Object,For In Loop,我正在尝试将属性从object1传输/复制到object2,但仅限于object2中未定义的属性 提前谢谢,我希望这能让你明白 let object1={a:1,b:2,c:3,d:4} 让object2={a:'string'} fillObj=函数(对象2,对象1){ for(让输入object1){ if(typeof object2.key==未定义){ object2[key]=object1[key]; } } return object2;//应该返回{a:'string',b

我正在尝试将属性从object1传输/复制到object2,但仅限于object2中未定义的属性

提前谢谢,我希望这能让你明白

let object1={a:1,b:2,c:3,d:4}
让object2={a:'string'}
fillObj=函数(对象2,对象1){
for(让输入object1){
if(typeof object2.key==未定义){
object2[key]=object1[key];
} 
}
return object2;//应该返回{a:'string',b:2,c:3,d:4}
};(1)使用括号符号而不是点符号,通过变量属性名称查看对象上的属性

(2) 要检查是否有未定义的内容,请直接与未定义的内容进行比较,或者使用
typeof
并与字符串
“未定义的”
进行比较(但此算法不需要此检查)

(3) 使用
hasOwnProperty

let object1={a:'string'}
设object2={a:1,b:2,c:3,d:4}
fillObj=函数(对象2,对象1){
for(让输入object1){
if(object1.hasOwnProperty(key)){
object2[key]=object1[key];
} 
}
return object2;//应该返回{a:'string',b:2,c:3,d:4}
};
log(fillObj(object2,object1))(1)使用括号符号而不是点符号,通过变量属性名称查看对象上的属性

(2) 要检查是否有未定义的内容,请直接与未定义的内容进行比较,或者使用
typeof
并与字符串
“未定义的”
进行比较(但此算法不需要此检查)

(3) 使用
hasOwnProperty

let object1={a:'string'}
设object2={a:1,b:2,c:3,d:4}
fillObj=函数(对象2,对象1){
for(让输入object1){
if(object1.hasOwnProperty(key)){
object2[key]=object1[key];
} 
}
return object2;//应该返回{a:'string',b:2,c:3,d:4}
};

log(fillObj(object2,object1))使用括号表示法而不是点表示法来查找变量属性名称,该变量属性名称在上述代码中仍然仅返回object2作为{a:'string'}。您还需要删除
typeof
,或者使用
=='undefined'
,因为
typeof
解析为字符串,永远不要
未定义
谢谢您的耐心等待。事实上,我早就试过了,除了“忽略对象原型”失败之外,其他测试都通过了。对此有什么提示或解释吗?使用
hasOwnProperty
检查实例对象是否具有该属性-它将忽略继承的属性。作为一种不雅观的速记,您也可以在继续代码之前先分散对象。使用括号表示法而不是点表示法来查找变量属性名称,该变量属性名称在上述代码中仍然仅以{a:'string'}形式返回object2。您还需要删除
类型,或者使用
=='undefined'
,由于
typeof
解析为字符串,因此永远不要解析为
undefined
,感谢您的耐心等待。事实上,我早就试过了,除了“忽略对象原型”失败之外,其他测试都通过了。对此有什么提示或解释吗?使用
hasOwnProperty
检查实例对象是否具有该属性-它将忽略继承的属性。作为一个不雅观的速记,您也可以在继续代码之前先传播对象。