私は意気消沈概念については本当にわからないんだけど、そのIについて私はObject.assign()を使用すると思います。列挙プロパティ:
は
"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' }
他の回答で提案されているように、これを行うには、必ずしも多くの方法があり、そしてあなたがそれそのように必要がある場合は確かにそれをプロトタイプを作ることができます。
編集:
私はそれが最初のオブジェクトを変更すると、私の最初の試みは全く非常によくありませんでした実現。
私はそれをよりシンプルにするためにこれを利用:
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' }
あなたも、それを「ダウンキャスト」必要があるのはなぜ?オブジェクトに追加のプロパティがあるかどうかは重要ですか? –
はい、重要です。私は、IBM BPMフレームワークによって定義されたタイプの変数を割り当てています。余分なプロパティがある場合は、データ型で定義されていないと言います。 –
@JosueGarcia余分なデータがあるとフレームワークはエラーを投げますか?そうでない場合は、追加のプロパティを削除する必要はありません。もしそうなら、私は以下の答えを与えました。 –