【发布时间】:2014-12-19 21:54:30
【问题描述】:
我正在尝试编写一个函数,它将接受两个对象,在这种情况下是人,并且只交换它们的两个属性。这是我的 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.
从技术上讲,它交换了这两个值,但是它们作为对象的结构已经消失了,并且它们本应保留的其他三个属性也消失了。如何编写交换函数来做到这一点?
谢谢!
【问题讨论】:
-
在这一行:
var a = a.iq + a.favoriteColor;您正在声明一个只有两个值(iq + favoriteColor)的变量(函数的本地变量)并记录它。请注意,这与作为参数传入的变量不同。更好的做法是将其称为其他名称(var b...同上)
标签: javascript jquery function object