javascript - 有没有办法在 JavaScript 中清除对象?

标签 javascript

有没有办法清除 Javascript 中的对象?具体来说,如果一个对象有多个成员变量,是否有一种简单的方法来重置每个值?

function exampleObject() {
    this.valueA = "A"; 
    this.valueB = "B"; 
    this.myArray = [1,2,3];
}

那么基本上,对于上述实例,将三个成员重置为空字符串和空数组?我可以轻松地为对象创建一个成员函数原型(prototype)来执行此操作并调用它:

function exampleObject() {
    this.valueA = "A"; 
    this.valueB = "B"; 
    this.myArray = [1,2,3];
    exampleObject.prototype.resetAll = function() {
        this.valueA = ""; 
        this.valueB = ""; 
        this.myArray = [];
    }
}

但是我想对第三方库中的对象执行此操作,因此添加成员函数是不现实的。

最佳答案

这取决于你所说的“重置”是什么意思。如果您想根据属性类型将所有属性清除为某个默认值,您可以执行以下操作:

function resetObject(o) {
    for(var key in o) {
        if(!o.hasOwnProperty(key)) continue;
        var val = o[key];
        switch(typeof val) {
            case "string":
                o[key] = ""; break;
            case "number":
                o[key] = 0; break;
            case "boolean":
                o[key] = false; break;
            case "object":
                if(val === null) break;
                if(val instanceof Array) {
                    o[key] = []; break;
                }
                val = {}; 
                //Or recursively clear the sub-object
                //resetObject(val);
                break;
        }
    }
}

关于javascript - 有没有办法在 JavaScript 中清除对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24089850/

相关文章:

javascript - window.print() 在 IE 中不工作

javascript - AngularJS - 无法比较 ngSelected 中的值

javascript - 单击时的CSS翻转动画

javascript - 抓取时间敏感信息的更好方法?

javascript - react-native 0.47 导航器已弃用,但我不使用它

javascript - 如何将 javascript 对象数组从一种格式排列为另一种格式

javascript - 在使用 Vue.js 加载数据之前阻止显示组件

javascript - 将数组迭代到自定义网格中

javascript - 如何将传入的 Google Analytics 营销事件 utm 字符串传递给传出点击

javascript - 将复选框加载/删除到数组时出现问题