我是新手,正在使用 javascript 方式。在 关闭点 。我可以使用 new
关键字创建对象,而无需 new
关键字, 太奇怪了 我。
这里的代码:-
function RankingManage(rank) {
var rank = rank;
function rankInc() {
rank++;
}
function rankDec() {
rank--;
}
return {
makeInc: function () {
rankInc();
},
makeDec: function () {
rankDec();
},
showRank: function () {
return rank;
}
}
}
var Rank = new RankingManage(80);
var Rank2 = RankingManage(80);
Rank.makeInc();
Rank2.makeInc();
console.log(Rank.showRank());//Output:- 81
console.log(Rank2.showRank());//Output:- 81
最佳答案
因为您正在创建和返回一个对象(使用 return { ... }
),所以您通常不会通过 RankingManage
调用 new
。您没有使用 new
运算符创建的对象,而是通过从函数返回非 new
对象来覆盖 null
表达式的默认结果。所以这两种方式都可以工作,但是将 new
与您当前编写的函数一起使用是没有意义的。
您当前的功能绝对没问题,只需在没有 new
的情况下调用它。 (并且由于它不是构造函数 - 您使用 new
调用的函数 - 按照惯例,您应该以小写字母开头,而不是大写字母。所以 rankingManage
。)
如果 您想在调用 new
时需要 RankingManage
,则可以使用 new
通过 this
关键字创建的对象:
function RankingManage(rank) {
var rank = rank;
function rankInc() {
rank++;
}
function rankDec() {
rank--;
}
this.makeInc = rankInc;
this.makeDec = rankDec;
this.showRank = function() {
return rank;
};
}
我们没有在其中使用
return
,因为(再次) new RankingManage
表达式的默认结果是对 new
创建的对象的引用。但同样,您现有的功能很好。
关于javascript - 闭包可以使用 new 关键字以及有什么区别,例如,在创建新对象/类时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34565247/