Mam następujące funkcję w klasie:Słowo kluczowe "this" zwraca obiekt okna w prototypie obiektu w JavaScript?
MyClass.prototype.myFunction = function(item, args)
{
console.log(this);
}
Ta funkcja jest wywoływana z zewnętrznej biblioteki, które nie mają dostępu do zmiany. Po wywołaniu konsola rejestruje "to" jako obiekt okna zamiast rzeczywistego obiektu instancji. Po przeszukaniu stackoverflow znalazłem ten cytat:
ustawiono to w zależności od sposobu wywołania metody, a nie w zależności od metody zapisu. Tak więc dla obj.method(), zostanie to ustawione na obj wewnątrz metody(). Dla obj.method.call (x), to wewnątrz metody() zostanie ustawione na x. Określa się to w jaki sposób się nazywa. Oznacza to także, że jeśli przekażesz to jako wywołanie zwrotne np. onclick zostanie ustawiony na obiekt okna globalnego, a nie na to, czego oczekujesz.
Zakładam, że to właśnie się dzieje i nie mogę zmienić tego, jak się nazywa. Moje pytanie brzmi, czy jest tak czy inaczej, aby uzyskać instancję obiektu, niezależnie od tego, jak to się nazywa?
Jeśli możesz, użyj słowa kluczowego "new", aby utworzyć instancję klasy. –