В более ранней статье упоминались различные способы вызова анонимных функций. В этой статье рассматриваются различные способы назвать именованные функции.
1. ()
Наиболее часто используемая функция - вызов/выполнить функцию:
Кода -копия выглядит следующим образом:
// Нет функции параметров FUN1
функция fun1 () {
оповещение («Я зовут»);
}
fun1 ();
// Функция параметров Fun2
функция fun2 (param) {
оповещение (PARAM);
}
FUN2 («Меня зовут»);
После ECMASCRICT3, вызов и применения функции, существует два типа функций.
2. Позвоните
Кода -копия выглядит следующим образом:
// Нет функции параметров FUN1
функция fun1 () {
оповещение («Я зовут»);
}
fun1.call (null);
// Функция параметров Fun2
функция fun2 (param) {
оповещение (PARAM);
}
fun2.call (null, «меня зовут»)
3. Применить
Кода -копия выглядит следующим образом:
// Нет функции параметров FUN1
функция fun1 () {
оповещение («Я зовут»);
}
fun1.apply (null);
// Функция параметров Fun2
функция fun2 (param) {
оповещение (PARAM);
}
fun2.apply (null, ['меня зовут'])
Несмотря на то, что вызов, применить может использоваться исключительно для вызова/выполнения функций, они более используются для изменения контекста выполнения функции.
4. Новый (этот метод не рекомендуется)
Кода -копия выглядит следующим образом:
// Нет функции параметров FUN1
функция fun1 () {
оповещение («Я зовут»);
}
новый fun1 ();
// Функция параметров Fun2
функция fun2 (param) {
оповещение (PARAM);
}
New Fun2 («Я зовут»)
Суть нового - создать/построить экземпляр класса. Fun1 и Fun2, определенные здесь, очевидно, не класс (нет, нет прототипа). Но обе функции действительно выполнялись. Это побочный эффект нового.
Из приведенного выше метода вызова нет никакой разницы в результатах выполнения четырех методов. Но если функция имеет возвратное значение, она может разочаровать вас при вызове ее по -новому.
Кода -копия выглядит следующим образом:
// функционировать веселье с возвратной стоимостью
function fun () {
оповещение («Я зовут»);
вернуть "Джек";
}
var c = new Fun ();
Alert (c); // [объект объекта], почему не «Джек»?
Изменить это на это
Кода -копия выглядит следующим образом:
// функционировать веселье с возвратной стоимостью
function fun () {
оповещение («Я зовут»);
return {name: 'jack'};
}
var c = new Fun ();
оповещение (c.name); // Джек, он вернулся нормально
Подводя итог: при вызове функции по -новому. Если есть возвратное значение, значение не будет возвращено, когда возвращаемое значение представляет собой встроенный тип (базовый тип) JavaScript, такой как String (String), номер (номер (номер), логический и т. Д.; Когда возвращаемое значение является типом объекта, объект, функция и массив будут возвращены непосредственно.
Когда возвратное значение является встроенным типом (базовый тип), что именно возвращает New Fun ()? В следующей статье будут обсуждаться детали новых вызовов метода.