像这样定义你的GameCard
对象(小提琴):
var GameCard = function () { //wrap in a function to mimic a constructor
return {
"image": "",
"container": "",
"match2Card": "",
"visible": false,
"cardId": "",
"updateCard": function (imageName, divName, matchingCard, isVisible, cardId) {
this.image = imageName;
this.container = divName;
this.match2Card = matchingCard;
this.visible = isVisible;
this.cardId = cardId;
},
"toggleCard": function () {
this.visible = !this.visible;
},
"printCard": function () {
log(this.image + ' ' + this.container + ' ' + this.match2Card + ' ' + this.visible + ' ' + this.cardId + '<br>');
}
};
};
var test = function () {
var gameCards = [],
card = null,
i = 0;
for (i = 0; i < 20; i = i + 1) {
// call the function to get a new object
card = GameCard();
// set object properties
z = i + 1;
c1 = Math.floor((Math.random() * 20) + 1);
card.updateCard('images/bf' + i + '.jpg', 'div' + c1, z, false, i);
// push into array
gameCards.push(card);
}
for (i = 0; i < 20; i++) {
gameCards[i].printCard();
}
};
test();
或像这样定义它(小提琴):
var GameCard = function () { //or make a constructable object
this.image = "";
this.container = "";
this.match2Card = "";
this.visible = false;
this.cardId = "";
this.updateCard = function (imageName, divName, matchingCard, isVisible, cardId) {
this.image = imageName;
this.container = divName;
this.match2Card = matchingCard;
this.visible = isVisible;
this.cardId = cardId;
};
this.toggleCard = function () {
this.visible = !this.visible;
};
this.printCard = function () {
log(this.image + ' ' + this.container + ' ' + this.match2Card + ' ' + this.visible + ' ' + this.cardId + '<br>');
};
};
var test = function () {
var gameCards = [],
card = null,
i = 0;
for (i = 0; i < 20; i = i + 1) {
// instantiate new object
card = new GameCard();
// set properties
z = i + 1;
c1 = Math.floor((Math.random() * 20) + 1);
card.updateCard('images/bf' + i + '.jpg', 'div' + c1, z, false, i);
// push into array
gameCards.push(card);
}
for (i = 0; i < 20; i++) {
gameCards[i].printCard();
}
};
test();
否则,您正在做的是将同一个实例推入数组 20 次。
更新
您还可以GameCard
按照当前的方式定义对象,然后调用Object.create(GameCard)
以创建它的新实例(小提琴):
var GameCard = {
"image": "",
"container": "",
"match2Card": "",
"visible": false,
"cardId": "",
"updateCard": function (imageName, divName, matchingCard, isVisible, cardId) {
this.image = imageName;
this.container = divName;
this.match2Card = matchingCard;
this.visible = isVisible;
this.cardId = cardId;
},
"toggleCard": function () {
this.visible = !this.visible;
},
"printCard": function () {
log(this.image + ' ' + this.container + ' ' + this.match2Card + ' ' + this.visible + ' ' + this.cardId + '<br>');
};
var test = function () {
var gameCards = [],
card = null,
i = 0;
for (i = 0; i < 20; i = i + 1) {
// use Object.create for a constructor
card = Object.create(GameCard);
// set properties
z = i + 1;
c1 = Math.floor((Math.random() * 20) + 1);
card.updateCard('images/bf' + i + '.jpg', 'div' + c1, z, false, i);
// push into array
gameCards.push(card);
}
for (i = 0; i < 20; i++) {
gameCards[i].printCard();
}
};
test();