Lassen Sie sagen, ich thoses zwei Objekte für Wich haben i-Descriptor auf jeder Requisiten gesetzt:Javascript: Wie definiere ich den Objekt-Deskriptor von Originalobjekten nach dem Mischen?
var readonly = {
libName: _libName,
libVersion: _libVersion,
createStage: _createStage,
renderer: _renderer
};
Object.keys(readonly).forEach(function (prop) {
Object.defineProperty(readonly, prop, {
writable: false
});
});
und
var writable = {
rendererOptions: _rendererOptions
};
Object.keys(writable).forEach(function (prop) {
Object.defineProperty(writable, prop, {
writable: false
});
});
Ich möchte dann die zwei Objekt mit assign verschmelzen, aber der Deskriptor nicht gehalten werden . Ich weiß nicht, ob es normal ist, wie ein drittes Objekt erstellt wird. Wenn ja, wie könnte ich daran arbeiten, den Deskriptor zu behalten? Hier ist, was ich erhalte (dies ist nur ein Beispiel BTW):
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}
Vielen Dank für jede Hilfe, die Sie geben können. Und wenn Sie eine bessere Lösung haben, bin ich dafür.
Scheint, Sie suchen nach etwas wie das 'completeAssign' Beispiel unter MDN Artikel auf [' Object.assign'] (https: // developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign#Copying_accessors). Der Artikel sollte Ihnen auch helfen, das Verhalten zu erklären, das Sie aus dem obigen Code sehen. –
"* ein drittes Objekt ist erstellt *" - nein. 'o === readonly'. – Bergi
Ich glaube, was Sie eigentlich wollen, ist 'var o = Object.freeze (Object.assign ({}, readonly, beschreibbar))' – Bergi