我正在尝试编写一个函数,该函数将采用两个对象(在本例中为人),并且仅交换它们的两个属性。这是我的 Person 函数:
function Person (tall, weight, gender, iq, favoriteColor) {
this.tall = tall;
this.weight = weight;
this.gender = gender;
this.iq = iq;
this.favoriteColor = favoriteColor;
}
var joe = new Person("6-2", 180, "male", 130, "blue");
var bob = new Person("5-11", 150, "male", 120, "red");
所以我想交换他们的智商和最喜欢的颜色。
到目前为止我有:
function Swap(a, b) {
var i = a;
a = b;
b = i;
console.log(a, b);
}
这显然交换了它们的所有属性,但我无法弄清楚如何仅交换两个属性并仍然将它们记录为对象。我努力了:
function Swap(a, b) {
var a = a.iq + a.favoriteColor;
var b = b.iq + b.favoriteColor;
var i = a;
a = b;
b = i;
console.log(a, b);
}
但这会在控制台中返回:
120red 130blue.
从技术上讲,它交换了这两个值,但它们作为对象的结构消失了,它们应该保留自己的其他三个属性也消失了。我如何编写交换函数来做到这一点?
Thanks!