Javascript:如何在混合原始对象后保留定义的对象描述符

Javascript : How to keep defined object descriptor of original objects after mixing them up?

本文关键字:对象 保留 定义 描述 原始 混合 Javascript      更新时间:2023-09-26

假设我有两个对象,我在每个道具上设置了描述符:

var readonly = {
     libName: _libName,
     libVersion: _libVersion,
     createStage: _createStage,
     renderer: _renderer
};
Object.keys(readonly).forEach(function (prop) {
    Object.defineProperty(readonly, prop, {
        writable: false
    });
});

var writable = {
    rendererOptions: _rendererOptions
};
Object.keys(writable).forEach(function (prop) {
    Object.defineProperty(writable, prop, {
        writable: false
    });
});

然后我想将两个对象与赋值合并,但没有保留描述符。我不知道它是否正常,因为创建了第三个对象。如果是这样,我该如何保留描述符?这是我得到的(这只是一个例子):

console.log(Object.getOwnPropertyDescriptor(writable, "rendererOptions"));
//gives Object {value: Object, writable: false, enumerable: true, configurable: true}
var o = Object.assign(readonly, writable);
console.log(Object.getOwnPropertyDescriptor(o, "rendererOptions"));
//gives Object {value: Object, writable: true, enumerable: true, configurable: true}

感谢您提供的任何帮助。如果你有更好的解决方案,我全力以赴。

这是我的评论作为答案:

似乎您正在寻找MDN关于Object.assign的文章下的completeAssign 示例之类的东西。本文还应该有助于解释您从上面的代码中看到的行为