从JavaScript通用对象中删除函数属性
我有一个带有一些属性的JavaScript对象,其中一个属性是function,我想删除function属性。 问题是JavaScript模型是通用的,我不知道属性名。从JavaScript通用对象中删除函数属性,javascript,web,knockout.js,Javascript,Web,Knockout.js,我有一个带有一些属性的JavaScript对象,其中一个属性是function,我想删除function属性。 问题是JavaScript模型是通用的,我不知道属性名。 如何执行此操作?通常,如果您认为需要执行此操作,通常需要深入问题以找到根本原因(为什么对象具有此功能,您认为首先需要删除此功能) 您可以从引用如下函数的对象中删除所有属性,假设它们是自己的可枚举属性: for (const key of Object.keys(theObject)) { if (typeof theOb
如何执行此操作?通常,如果您认为需要执行此操作,通常需要深入问题以找到根本原因(为什么对象具有此功能,您认为首先需要删除此功能) 您可以从引用如下函数的对象中删除所有属性,假设它们是自己的可枚举属性:
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
,如果您想提前停止):
但同样,这听起来像是一个X/Y问题,你想做X,认为Y是如何做的,然后问Y。我想如果你看得更深一点,你会想解决X。你可以使用for in loop in object,然后使用delete delete it进行检查。我们需要更多的上下文,给我们展示一个对象的示例。
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
}
});