我正在嘗試編寫一個函數,該函數將採用兩個對象,在這種情況下爲人,並且只交換其兩個屬性。這是我的人的功能:用javascript中的函數交換對象的兩個屬性
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");
所以我想交換隻是他們的智商和favoriteColor。
到目前爲止,我有:
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.
技術上講,它調換了兩個值,但其作爲一個對象結構已不復存在,他們應該到其他三個屬性保持自己的也不見了。如何編寫交換功能來做到這一點?
謝謝!
關於這一行:'var a = a.iq + a.favoriteColor;'你聲明一個變量(本地函數)只有兩個值(iq + favoriteColor)並記錄它。請注意,這與傳入的參數不同。更好的做法是將其稱爲別的東西(同樣適用於'var b ...') – ochi