有没有办法让 lodash 复制属性获取者和设置器

Is there a way to make lodash copy property getters and setters?

本文关键字:获取 设置 属性 复制 lodash 有没有      更新时间:2023-09-26

在以下情况下,我发现 lodash 似乎没有复制源对象的 getter:

const _ = require("lodash");
let sourceObject = { };
Object.defineProperty(sourceObject, "abc", {
    get: () => 123
});
let cloneObject = _.cloneDeep(sourceObject);
console.log(sourceObject.abc); // 123
console.log(cloneObject.abc);  // undefined

有没有办法使用 lodash 模块实现上述目标?

仅当定义的属性为 enumerable 时。这将导致它被检测到Object.keys()这最终是 lodash 获取属性名称列表的方式。当您使用 {enumerable: true} 选项定义属性时,这是可配置的,但它默认为 false ,这就是 _.cloneDeep 不选取您的属性的原因。

请参阅 Object.defineProperty 的 MDN 文档 了解更多详情。