Ich bin nicht wirklich sicher über die gesenkten Konzept, aber für diesen I denke ich würde Object.assign() verwenden, mit der enumerable Eigenschaft:
"use strict"
let person1 = { name: 'Doe', age: 25 }
let person2 = { name: '' }
for (let key in person1) {
if (!person2.hasOwnProperty(key)) {
Object.defineProperty(person1, key, { enumerable: false })
}
}
let person = Object.assign(person2, person1)
console.log(person) // { name: 'Doe' }
Es ist unbedingt viele Möglichkeiten, dies zu tun, wie es in den anderen Antworten vorgeschlagen, und man kann es auf jeden Fall einen Prototyp machen, wenn man es auf diese Weise benötigen.
edit:
Ich weiß, mein erster Versuch gar nicht sehr gut war, wie es Anfangs-Objekte ändern.
ich dies nutzen, um es einfach:
let Person = function() {}
Person.prototype.downcast = function (p1, p2) {
let c = {}
for (let k in p1) {
if (p2.hasOwnProperty(k)) {
c[k] = p1[k]
}
}
return c
}
let person = new Person().downcast(person1, person2)
console.log(person) // { name: 'Doe' }
Warum brauchen Sie auch auf „gesenkten“ oder? Ist es wichtig, ob das Objekt zusätzliche Eigenschaften hat? –
Ja, es ist wichtig. Ich weise eine Variable dem vom IBM BPM Framework definierten Typ zu. Wenn ich zusätzliche Eigenschaften habe, heißt das, dass sie nicht im Datentyp definiert sind. –
@JosueGarcia Also das Framework wirft einen Fehler, wenn es zusätzliche Daten gibt? Wenn nicht, gibt es keinen Grund, die zusätzlichen Eigenschaften zu entfernen. Wenn ja, habe ich unten eine Antwort gegeben. –