Co robi w JavaScript zapis var wynik = napis1 instanceof napisy;?
napis1class; instanceof niczego nie tworzy.napis1 do zmiennej napisywynik jako wartość logiczna.napis1 jest instancją klasy napisyinstanceof zwraca true, gdy obiekt pochodzi z podanej klasy.napisy ma metodę napis1typeof albo operator in.Operator instanceof sprawdza, czy obiekt po lewej stronie został utworzony z klasy (konstruktora) podanej po prawej stronie, i zwraca wartość logiczną. Jeśli wcześniej wykonano var napis1 = new napisy();, to wynik będzie równy true, a dla zwykłego napisu czy liczby - false.
Sprawdzenie obejmuje cały łańcuch dziedziczenia: obiekt klasy pochodnej jest też instancją klasy bazowej, a każda tablica daje true dla [] instanceof Array i [] instanceof Object. Operator przydaje się przed wywołaniem metody, którą ma tylko obiekt określonej klasy, oraz przy obsłudze wyjątków, na przykład if (e instanceof TypeError).
Wynik operatora najczęściej trafia do instrukcji warunkowej, na przykład if (napis1 instanceof napisy) { ... }.
Zapis zawiera nazwę klasy i nazwę obiektu, dlatego kusi odczytanie go jako tworzenie czegoś nowego. Nową klasę deklaruje się jednak słowem class, a obiekt tworzy operatorem new. instanceof niczego nie tworzy, tylko porównuje i zwraca true albo false.
Sprawdzanie metody w klasie wygląda inaczej, na przykład typeof obiekt.metoda === 'function' albo 'metoda' in obiekt. Słowo „sprawdza” w tej odpowiedzi jest trafne, ale dotyczy czegoś innego niż działanie operatora.
Kopiowanie obiektu do zmiennej to zwykłe przypisanie napisy = napis1;, a zmienna po lewej stronie znaku równości w zadaniu nazywa się wynik. Do niej trafia wartość logiczna: czy napis1 jest instancją klasy napisy.
Wskazówką jest też miejsce wyniku: wyrażenie stoi po prawej stronie przypisania, więc musi dawać jakąś wartość. Operator porównujący typ obiektu z klasą daje wartość logiczną, którą zapamiętuje zmienna wynik.