我传递的对象如下:
obj = {a:1,b:2,c:3}
我正在尝试将1/2/3
更改为changed
这是我的代码:
var func = function(change) {
for (var property in change) {
if (func.hasOwnProperty(property)) {
change.property = "changed"
return func
}
}
}
现在我的输出正在给我原始属性而没有任何变化。
我尝试在if语句中返回func
以查看这是否是范围问题,但没有运气。
答案 0 :(得分:1)
您的意思是将您传递的对象的所有属性作为参数循环,并将其值更改为“已更改”
function func(change) {
Object.keys(change).forEach(function(key) {
change[key] = 'changed';
});
};
var obj = {
a: 1,
b: 2,
c: 3
};
func(obj);
console.log(obj);
您的函数不需要return
,因为您正在更改通过引用传递的对象值。
答案 1 :(得分:0)
我认为你正在寻找这个。您的变量不会作为'的一部分。'符号。您必须使用括号来完成此操作。
var func = function(change){
for (var property in change) {
if (func.hasOwnProperty(property)) {
func[property] = "changed"
}
}
return func
}
答案 2 :(得分:0)
如果您要更改所有argumetns
var func = function(){
for (var i=0;i<arguments.length;i++)
arguments[i]='changed'
return arguments;
}
例如:
func('a',b'c') // return ['changed','changed','changed']