我想将JavaScript对象的所有属性值更改为某个值(在本例中为false)。我知道如何通过单独更改所有这些(示例A)或循环(示例B)来完成此操作。我想知道是否还有其他内置方法可以做到这一点,推荐的方法是什么(主要是速度方面还是其他任何副作用)?
伪代码:
// Example object
Settings = function() {
this.A = false;
this.B = false;
this.C = false;
// more settings...
}
// Example A - currently working
updateSettingsExampleA = function(settings) {
// Settings' properties may not be be false when called
settings.A = false;
settings.B = false;
settings.C = false;
while (!(settings.A && settings.B && settings.C) && endingCondition) {
// code for altering settings
}
}
// Example B - currently working
updateSettingsExampleB = function(settings) {
// Settings' properties may not be be false when called
for (var property in settings) {
settings[property] = false;
}
while (!(settings.A && settings.B && settings.C) && endingCondition) {
// code for altering settings
}
}
// possible other built in method
updateSettingsGoal = function() {
this.* = false; // <-- statement to change all values to false
while (!(this.A && this.B && this.C) && endingCondition) {
// code for altering settings
}
}
答案 0 :(得分:2)
不,没有这样的内置方法。如果您想“将所有属性值更改为false ”,请使用循环执行此操作。你的例子B完全没问题。
我不建议展开循环(示例A),除非它不是“所有属性”,或者您需要此代码段的绝对最大速度。但这是微观优化,它不会使你的代码变得更好。