任何人都可以在function exports()
之后准确解释代码的功能是什么,为什么我应该这样做呢?
(function () {
'use strict';
function Card() {
this.isFaceUp = false;
this.isUnplayalbe = false;
}
Card.prototype = {
contents: function (v) {
if (v === undefined) {
return this._contents;
} else {
return this._contents = v;
}
},
match: function (otherCards) {
var score = 0;
if (Array.isArray(otherCards)) {
otherCards.forEach(compare, this);
} else {
compare.call(this, otherCards);
}
function compare(card) {
if (card.contents() === this.contents()) {
score = 1;
}
}
return score;
}
};
function exports() {
return new Card();
}
exports.Card = Card;
window.card = exports;
})();
答案 0 :(得分:0)
您的代码将Card属性添加到window对象,因此该属性将是一个Function对象(意味着可执行),因为该Card属性已赋值Function类型的值(导出声明为函数并分配给Card),但也是Function对象本身将具有属性Card,它是Card对象,并且该可执行属性也可以返回新的Card对象,如果被调用....
window.Card
是导出功能exports
函数每次调用时都会返回新的Card
对象,因此window.Card
也会执行此操作(var card1 = window.Card()
)exports
函数有属性Card
(我不知道为什么需要)window.Card.Card
- 也是Card
对象