Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:替换对象属性值_Javascript_Object - Fatal编程技术网

Javascript:替换对象属性值

Javascript:替换对象属性值,javascript,object,Javascript,Object,如何用字符串替换obj的每个道具 预期结果: var obj = { prop1: "value1", prop2: "value2", prop3: "value3" } 作为在对象上循环的最佳实践,您应该使用hasOwnProperty来确保只覆盖属性而不覆盖函数,除非您100%确定循环不会发生在只包含属性的对象上,如示例中所示。第二个检查是确保它不会覆盖对象中存在的任何对象 var obj = { prop1: "foo", prop2: "foo",

如何用字符串替换obj的每个道具

预期结果:

var obj = {
    prop1: "value1",
    prop2: "value2",
    prop3: "value3"
}

作为在对象上循环的最佳实践,您应该使用hasOwnProperty来确保只覆盖属性而不覆盖函数,除非您100%确定循环不会发生在只包含属性的对象上,如示例中所示。第二个检查是确保它不会覆盖对象中存在的任何对象

var obj = {
   prop1: "foo",
   prop2: "foo",
   prop3: "foo"
}

只需在所有键上循环并将属性设置为所需的值

var obj={
建议1:“价值1”,
prop2:“value2”,
建议3:“价值3”
};
Object.keys(obj).forEach(函数(key){
obj[key]=“foo”;
});

document.write(''+JSON.stringify(obj,0,4)+'')在属性上循环,并将每个属性的值设置为所需的值。
hasOwnProperty
obj
没有其他方法,不会继承任何可枚举的内容。我知道。不过,使用hasOwnProperty是一种最佳实践,这就是我提到它的原因。在某些情况下,对象可能包含不希望覆盖的其他对象类型。我刚刚发布的更新代码也解释了对象中的对象。不,这不是每天编写的处理数据对象的代码的最佳实践,只是多余的绒毛使代码难以阅读和理解。在可能需要处理实例的泛型(例如库)函数中使用它是一个很好的做法,而且,更新一点意义都没有。我既不理解这是为了防止什么(或者为什么有必要这样做),也不理解代码是否真正起作用
typeof
永远不会产生
“[object object]”
,而且大多数属性值都没有
.toLowerCase()
方法,因此当您尝试调用它时,它会抛出。对我来说仍然没有意义。不需要
toLowerCase
,为什么要排除对象?OP说他想替换每个属性。这可能对这个对象有效,但在某些情况下,这个对象可能包含其他对象、函数和属性。这不会覆盖这些成员的值以及字符串吗?我在问题中看不到这一要求。。。在现实世界中,赋值是由类型检查覆盖的。在我的世界中是这样的,但我设计框架和库,所以从我的角度来看,每当我不得不这样做时,我不能期望我的函数所使用的对象实际上只包含属性。顺便说一句,我喜欢你的for循环的样式。这样效率更高。
var obj = {
    prop1: "value1",
    prop2: "value2",
    prop3: "value3",
    prop4: {
        test: "test"
    }
}
for (var p in obj) {
    if (obj.hasOwnProperty(p) && (typeof obj[p]) != "object") {
        obj[p] = "foo"
    }
}