从对象中剥离属性的 Javascript native /优雅方式

标签 javascript

我想知道是否有一种原生/优雅的方式来做到这一点:

var object = {
    value: 1,
    desc: 'an object',
    method: function(){
        return this.description + ' with value: ' + this.value;
    },
};
var onlyProperties = JSON.parse(JSON.stringify(object));

如您所见,我只想要其中没有任何方法的属性。上面的代码可以工作,但这样做感觉不对。

最佳答案

如果您不寻求递归解决方案,这里有一种简单的方法。

for (var i in obj) {
    if (obj.hasOwnProperty(i) && typeof obj[i] === 'function') {
        delete obj[i];
    }
}

如果你想要一份没有功能的副本:

var copy = {};
for (var i in obj) {
    if (obj.hasOwnProperty(i) && typeof obj[i] !== 'function') {
        copy[i] = obj[i];
    }
}

关于从对象中剥离属性的 Javascript native /优雅方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18658338/

相关文章:

javascript - 如何获取 JavaScript 代理的目标?

javascript - 六边形上的 HTML5 图像未加载图像,而是绘制黑色六边形

javascript - Chart.JS 我想为每个 Y 轴值网格线颜色设置不同的颜色

javascript - 通过解析带有字符串问题的对象以树形结构显示

javascript - 在 jQuery hideIntent 上设置间隔

javascript - 继承类的原型(prototype)对象如何等于 JavaScript 中原始类的新实例?

javascript - Facebook JS SDK 滚动

javascript - "fadeTo"函数忽略时间

javascript - 在 IFrame 中更改样式 - JQuery

javascript - 编辑功能在 Knockout js 中不起作用