javascript - 用新的或清除对象字段替换对象?

标签 javascript object

我之所以提出这个问题,是因为由于某种原因,我在将对象变量的值设置为 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);

工作示例: http://jsfiddle.net/PzhUV/

关于javascript - 用新的或清除对象字段替换对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15374843/

相关文章:

javascript - 如何更改 "parent"帧的 URL?

python - Python 中的线程 : class attribute (list) not thread-safe?

javascript - 从键/值对象对中查找最大值 Javascript

c# - 对象实例化异常。初始化成员会发生什么?

javascript - 如何测试一系列交互?

javascript - 如何使用 Node.js 读取大文件,并不断拉取更改

javascript - 谷歌可视化不工作?

javascript - dropzoneJS - 在 dropzone 类之外的另一个元素中预览图像

Java 对象值数组

objective-c - 理解 Objective-C 中的 self