我之所以提出这个问题,是因为由于某种原因,我在将对象变量的值设置为 false 时遇到问题。
我有
var myObject{ checkValid = false, self.getCheckValid = function(){ return checkValid; } self.setCheckValid = function(mode){ checkValid = mode; } } objectVariable = new myObject;
当我运行objectVarible.setCheckValid(true)
时,我会得到真实值。但是当我运行 objectVariable.setCheckValid(false)
时,整个应用程序都会出错(除了我在移动设备中开发并且看不到返回的实际错误)。
但后来我想知道,如果我不能将模式设置为 false,我是否可以通过再次调用 objectVariable = new myObject;
来重新启动整个对象。这将用新对象覆盖旧对象,并使我回到初始化状态,这正是我正在寻找的。
有理由不这样做吗?或者一种方法比另一种更好? 为什么我不能将 checkValid 设置为 false?
最佳答案
创建对象的语法使用 :
而不是 =
来创建属性。也不需要使用 .self
来访问属性。此外,将对象分配给变量时,您应该使用语法 var myObject = {/**properties**/};
var myObject = {
checkValid:false,
getCheckValid: function(){
return this.checkValid;
},
setCheckValid: function(mode){
this.checkValid = mode;
}
};
工作示例: http://jsfiddle.net/PSYSM/
您放置在对象上的访问器是不必要的,您可以直接访问 checkValid
属性,而无需访问器。
var myObject = {
checkValid:false
};
alert(myObject.checkValid);
myObject.checkValid = true;
alert(myObject.checkValid);
工作示例: http://jsfiddle.net/JtfaJ/
关于将 new 与 MyObject
一起使用,这是不可能的,因为您已经声明了对象文字。该对象仅存在一个实例,因此您无法创建该对象的实例。如果要创建实例,则需要创建对象构造函数。这可以按如下方式完成:
function MyObject(){
this.checkValid = false;
}
var myObject1 = new MyObject();
myObject1.checkValid = true;
alert(myObject1.checkValid);
var myObject2 = new MyObject();
alert(myObject2.checkValid);
关于javascript - 用新的或清除对象字段替换对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15374843/