嘿,我刚接触javascript,我在javascript中偶然发现了这段代码。我不明白如何在函数内部增加和打印方法。这是否意味着创造是一个对象?
function create() {
var counter = 0;
return {
increment: function () {
counter++;
},
print: function () {
console.log(counter);
}
}
}
var c = create();
c.increment();
c.print(); // 1
答案 0 :(得分:1)
“create()”函数返回对象。它返回的对象有两个属性,“increment”和“decrement”,两者都有值作为值。这些函数对“create()”中定义的变量“counter”进行操作。
每次调用“create()”都会实例化一个名为“closure”的新上下文。上下文包含“counter”变量的新副本。因此,从调用“create()”返回的对象可以访问自己的私有“计数器”实例。
答案 1 :(得分:0)
您的关键字是关闭。
javascript中的闭包很容易被覆盖,例如在How do JavaScript closures work?。