gpt4 book ai didi

javascript - 对象的适当属性循环

转载 作者:行者123 更新时间:2023-11-30 12:46:17 25 4
gpt4 key购买 nike

好的。所以直到现在,我已经“摆脱了”使用这样的东西:

function foo(arg) {
// Default values:
var opt = { a: 1, b: 2, c: 3 },
key;
for (key in opt)
if (opt.hasOwnProperty(key) && arg.hasOwnProperty(key))
opt[key] = arg[key];
}

现在,我越来越讨厌使用 hasOwnProperty,因为它可能已被某些自定义属性覆盖。

如果我们要使用 keys()forEach() 等,而不是什么做上述事情的正确方法?是这样的吗?

function bar(arg) {
// Default values:
var opt = { a: 1, b: 2, c: 3 },
keys = Object.keys(arg);
Object.keys(opt).forEach(function(key) {
if (keys.indexOf(key) !== -1)
opt[key] = arg[key];
});
}

最佳答案

如果您担心 hasOwnProperty 已被覆盖,那么您可以这样做:

Object.prototype.hasOwnProperty.call(arg, key)

所以你的原始代码可以是:

function foo(arg) {
var opt = { a: 1, b: 2, c: 3 },
check = Object.prototype.hasOwnProperty,
key;
for (key in opt) {
if (check.call(opt, key) && check.call(arg, key)) {
opt[key] = arg[key];
}
}
return opt;
}

关于javascript - 对象的适当属性循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22398751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com