Вызов функции JavaScript
Код внутри JavaScript function
будет выполняться, когда «что-то» вызывает его.
Вызов функции JavaScript
Код внутри функции не выполняется, когда функция определена .
Код внутри функции выполняется при вызове функции .
Обычно используется термин « вызов функции » вместо «вызов функции ».
Также принято говорить «вызвать функцию», «запустить функцию» или «выполнить функцию».
В этом уроке мы будем использовать invoke , потому что функцию JavaScript можно вызвать без вызова.
Вызов функции как функции
Пример
function myFunction(a, b) {
return a * b;
}
myFunction(10, 2); //
Will return 20
Вышеуказанная функция не принадлежит ни одному объекту. Но в JavaScript всегда есть глобальный объект по умолчанию.
В HTML глобальным объектом по умолчанию является сама HTML-страница, поэтому приведенная выше функция «принадлежит» HTML-странице.
В браузере объектом страницы является окно браузера. Приведенная выше функция автоматически становится оконной функцией.
myFunction() и window.myFunction() — это одна и та же функция:
Пример
function myFunction(a, b) {
return a * b;
}
window.myFunction(10, 2); // Will also return 20
Это распространенный способ вызова функции JavaScript, но не очень хорошая практика.
Глобальные переменные, методы или функции могут легко создавать конфликты имен и ошибки в глобальном объекте.
это ключевое слово
В JavaScript вещь, называемая this
, является объектом, который «владеет» текущим кодом.
Значение this
, когда используется в функции, является объектом, который "владеет" функцией.
Обратите внимание, что this
это не переменная. Это ключевое слово. Вы не можете изменить значение this
.
Совет: Узнайте больше о this
ключевом слове в JS this Keyword .
Глобальный объект
Когда функция вызывается без объекта-владельца, значение this
становится глобальным объектом.
В веб-браузере глобальным объектом является окно браузера.
Этот пример возвращает объект окна как значение this
:
Пример
let x = myFunction();
// x will be the window object
function myFunction() {
return this;
}
Вызов функции как глобальной функции приводит к тому, что значение this становится глобальным объектом.
Использование объекта окна в качестве переменной может легко привести к сбою вашей программы.
Вызов функции как метода
В JavaScript вы можете определять функции как методы объекта.
В следующем примере создается объект ( myObject ) с двумя свойствами ( firstName и lastName ) и методом ( fullName ):
Пример
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
myObject.fullName(); // Will return "John Doe"
Метод fullName является функцией. Функция принадлежит объекту. myObject является владельцем функции.
То, что называется this
, — это объект, который «владеет» кодом JavaScript. В этом случае значением this
является myObject .
Попробуй это! Измените метод fullName , чтобы он возвращал значение this
:
Пример
const myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this;
}
}
// This will return [object Object] (the owner object)
myObject.fullName();
Вызов функции в качестве метода объекта приводит к тому, что значением this
является сам объект.
Вызов функции с помощью конструктора функций
Если вызову функции предшествует new
ключевое слово, это вызов конструктора.
Похоже, вы создаете новую функцию, но, поскольку функции JavaScript являются объектами, вы на самом деле создаете новый объект:
Пример
// This is a function constructor:
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
// This creates a new object
const myObj = new myFunction("John", "Doe");
// This will return "John"
myObj.firstName;
Вызов конструктора создает новый объект. Новый объект наследует свойства и методы своего конструктора.
Ключевое this
слово в конструкторе не имеет значения.
Значением this
будет новый объект, созданный при вызове функции.