次の JavaScript について考えてみましょう。
<script>
function Ninja() {
var feints = 0;
this.getFeints = function() {
return feints;
}
this.feint = function() {
feints++;
}
this.increaseByTwo = function() {
feints = feints + 2;
}
}
var ninja = new Ninja();
ninja.feint();
console.log(ninja.getFeints()); //outputs one
ninja.increaseByTwo();
console.log(ninja.getFeints()); // outputs three
</script>
上記のコードで 4 つのクロージャーが作成されると言うのは正しいですか
- 忍者用の 1 つ - これはちょっと無関係です。
- Ninja 内の内部関数ごとに 1 つ。これら 3 つのクロージャはそれぞれ同じものを指しています。
それとも、JavaScript は 2 つのクロージャーを作成しますか?
- 忍者用の 1 つ - これはちょっと無関係です
- 3 つの内部関数の 1 つ。3 つの内部関数は同じクロージャーを共有します。