Извикване на функция

Функциите в JavaScript може да се извикат по четири различни начина. Всеки метод се различава в това как тя се инициализира.

Ключовата дума this

В JavaScript (и не само) this се отнася до обект, който „притежава“ текущия код. Стойността на this, когато се използва във функция, е обектът който „притежава“ функцията.
Бележка: имайте предвид, че this не е променлива. Това е просто една от многото ключови думи. Също така не можете да промените стойността й по никакъв начин.

Извикване на дадена функция като функция

Функцията по-горе не принадлежи на който и да било обект. Но в JavaScript винаги има един глобален обект по подразбиране. В HTML този глобален обект по подразбиране принадлежи на HTML страницата, така че функцията по-горе „принадлежи“ на HTML страницата. В браузъра глобаленият обект на страница е прозореца на браузъра. Функцията горе автоматично става функция принадлежаща на прозореца на браузъра. myFunction() и window.myFunction() са една и съща функция:

Опитайте сами »

Бележка: това е често срещан начин да се позове функция при JavaScript, но не е добра практика в компютърното програмиране. Глобалните променливи, методи, или функции могат лесно да създават конфликти при именуването и грешки в глобалният обект.

The Global обекта

Когато дадена функция се извика без да има обект, но който да принадлежи, стойността на this е глобалният обект. Както споменахве по-горе в браузъра глобаленият обект е прозореца. Следващият пример показва как връща обекта на прозореца, тъй като стойността на this е равна на него.

Опитайте сами »

Бележка: извикване на функция като глобална функция, задава стойността на this да бъде глобаленият обект. Използването на обекта принадлежащ на прозореца на браузъра като променлива, може лесно да се срине вашата програма.

Извикване на функция като метод

В JavaScript можете да дефинирате функция, като метод на даден обект. Следващият пример създава обект ( myObject ), с две свойства ( firstName и lastName ), и метод ( fullName ):

Опитайте сами »

Методът fullName е функция. Функцията принадлежи към обекта. MyObject е собственик на функцията. Това, което се нарича this , е обектът който „притежава“ JavaScript кода. В този случай стойността на this е myObject . Тествайте го! Променете метода fullName за да върне стойността на this.

Опитайте сами »

Извикване на функция като метод на обект, причинява стойността на this да бъде самият обект.

Извикване на функция с конструктор(функция)

Ако извикването на една функция е предшествано с ключовата дума new, това предизвиква и ивикването на конструктора на същата функция. Изглежда така, че все едно се създаде нова функция, но тъй като функциите при JavaScript всъщност са обекти по този начин в крайна сметка се създава нов обект:

Опитайте сами »

Извикване на конструктор създава нов обект. Новият обект наследява свойствата и методите от своя конструктор. В ключова дума this, която е в конструктора няма стойност. Стойността на this ще бъде новият обект, който ще бъде създаден когато функцията се извиква.

Вижте още