Jeśli Counter to obiekt, to czy zmienna "i" to właściwość?

0

Witam !

Chciałbym się zapytać czy dobrze rozumuje, w poniższym fragmencie kodu, jestem prawie pewny że zmienna "Counter" to obiekt. Jak w tym przypadku nazwać zmienną " i " ? Na początku myślałem że jest to właściwość obiektu " Counter ".

Z góry dziękuje za odpowiedź.

const EventEmitter = require('events').EventEmitter;

const Counter = function(i) {
  this.increment = function() {
    i++;
    this.emit('incremented',i);
  }
}

Counter.prototype = new EventEmitter();
const counter = new Counter(10);

1

Zmienna i to zmienna lokalna w anonimowej funkcji wewnątrz drugiej anonimowej funkcji, którą podpinasz do stałej Counter.


Aby uzyskać publiczne pole, musiałbyś podejść do tego na przykład tak:

function Counter() {
  this.i = 0;
}

let counter = new Counter();

Ew. aby uzyskać odpowiednik pola prywatnego:

function Counter() {
  let i = 0;

  this.getCounter = () => {
    return i;
  };
}

let counter = new Counter();

(przy czym w tym wypadku i nadal jest zmienną lokalną - tyle tylko, że jest kontekstem powiązana z instancją licznika, więc można powiedzieć, że symbolicznie służy za pole prywatne.)

1

Na temat odpowiadaj w postach.

Zmienna " Counter " to obiekt ?

Nie widzę żadnej zmiennej Counter w moim kodzie ;-)

Zmienna " i " istnieje (jest przechowywana w pamięci ) dopóki istnieje " Counter " ?

Lokalna zmienna i jest przechowywana w pamięci co najmniej tak długo, jak istnieje utworzona instancja Counter.
Każde new Counter() powoduje utworzenie nowego kontekstu, a co za tym idzie - kolejnego, unikalnego i.

0
const Counter = function(i){....}

to nie jest zadeklarowanie zmiennej i przypisanie jej do funkcji ?

1

To jest zdefiniowanie funkcji i przypisanie jej do stałej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1