从JavaScript通用对象中删除函数属性

时间:2017-11-08 11:18:21

标签: javascript web knockout.js

我有一个带有一些属性的JavaScript对象,其中一个属性是函数,我想删除函数属性。 问题是JavaScript模型是通用的,我不知道属性名称。 我该怎么办?

1 个答案:

答案 0 :(得分:0)

一般情况下,如果您认为需要这样做,通常需要进一步研究问题以找到根本原因(为什么对象具有此功能,您认为首先需要删除)。

您可以从引用此类函数的对象中删除所有属性,假设它们是拥有可枚举属性:< / p>

for (const key of Object.keys(theObject)) {
    if (typeof theObject[key] === "function") {
        delete theObject[key];
    }
}

如果它可能无法枚举,我们可以改为使用getOwnPropertyNames

for (const key of Object.getOwnPropertyNames(theObject)) {
    if (typeof theObject[key] === "function") {
        delete theObject[key];
    }
}

如果您想要停止使用第一个,请添加break;

这两个例子都是ES2015 +;如果您需要在ES5中执行此操作,请使用forEach(如果您想提前停止,请使用some):

Object.keys(theObject).some(function(key) {
    if (typeof theObject[key] === "function") {
        delete theObject[key];
        return true; // If you want to stop on the first; if not,
                     // remove this and use `forEach` instead
    }
});

但同样,这听起来像是一个X / Y问题,你想要做X,并且认为Y是如何做到的,并询问Y.我怀疑如果你看得更深,你会想要解决X而不是