我创建了一个javascript“class”,如下所示:
function MyClass(member1, member2) {
this.Member1 = member1;
this.Member2 = member2;
}
所有成员都是字符串。
我想通过调用
来获取MyClass的一个实例并“清理”成员function NoneBecomesNull(item) {
if (item === "[None]")
item = "";
return item;
}
for-class的每个成员。有没有一种有效的方法来完成这项任务? (在MyClass有30名成员的情况下)。
我想避免做...
myClassInstance.Member1 = NoneBecomesNull(myClassInstance.Member1);
myClassInstance.Member2 = NoneBecomesNull(myClassInstance.Member2);
//...30+ times
答案 0 :(得分:4)
尝试以下
for (var name in theObject) {
if (theObject.hasOwnProperty(name) && theObject[name] === "[None]") {
theObject[name] = "";
}
}
我使用hasOwnProperty
来防止在原型链中重新设置属性。您的示例未在此处显示原型链的使用,因此可能不需要此示例。但这是一个很好的做法。
答案 1 :(得分:3)
为什么不将此行为封装在对象中?
function MyClass(member1, member2) {
this.Member1 = member1;
this.Member2 = member2;
this.clean = function() {
for ( var member in this ) {
if (this.hasOwnProperty(member) && this[member] === "[None]") {
this[member] = "";
}
}
};
}
然后它只需要一行来完成......
var obj = new MyClass("[None]", "hello");
obj.clean();