Введение в Call () на официальном сайте Mozilla:
Кода -копия выглядит следующим образом:
Метод Call () вызывает функцию или метод с указанным этим значением и несколькими указанными значениями параметров.
Call () Синтаксис
Кода -копия выглядит следующим образом:
fun.call (thisarg [, arg1 [, arg2 [, ...]]])
Call () параметр
эторг
Кода -копия выглядит следующим образом:
Это значение указано при выполнении забавной функции. Следует отметить, что указанное это значение не обязательно означает реальное это значение, когда функция выполняется. Если эта функция находится в нетронутом режиме, это значение, указанное как нулевое и неопределенное, автоматически указывает на глобальный объект (объект окна в браузере), и это значение с исходным значением (число, строка, булево значение) будет указывать на автоматический объект обертывания исходного значения.
arg1, arg2, ...
Кода -копия выглядит следующим образом:
Указанный список параметров.
Метод Call () в JavaScript
Давайте не будем обращать внимание на сложные объяснения выше, начните этот процесс шаг за шагом.
Пример метода Call ()
Итак, я написал еще одно привет, мир:
Кода -копия выглядит следующим образом:
Функция печати (P1, P2) {
console.log (p1 + '' + p2);
}
print ("Hello", "World");
print.call (undefined, «Привет», «Мир»);
Эти два метода имеют одинаковый выход, однако, напротив, метод вызова также проходит неопределенное.
Далее давайте посмотрим на другой пример.
Кода -копия выглядит следующим образом:
var obj = function () {};
Функция печати (P1, P2) {
console.log (p1 + '' + p2);
}
print.call (obj, "hello", "World");
Но здесь то, в чем мы прошли, все еще не определено, потому что неопределенное в предыдущем примере заключается в том, что необходимо передать параметр. Здесь нет реального отражения использования вызова, см. Лучший пример.
Кода -копия выглядит следующим образом:
Функция печати (имя) {
console.log (this.p1 + '' + this.p2);
}
var h = {p1: "hello", p2: "world", print: print};
H.print ("fd");
var h2 = {p1: "hello", p2: "world"};
print.call (h2, "ничего");
Вызов называется заимствованием методов и объектов других людей, как и называть свои собственные. В H.print, когда функция называется методом, это будет указывать на связанный объект. Но в этом примере мы не понимали, называется ли H2 Print или Print, называемый H2. Итак, я привлек пример Mozilla
Кода -копия выглядит следующим образом:
Функциональный продукт (имя, цена) {
this.name = name;
this.price = цена;
if (цена <0)
Throw DrangeError («не может создать продукт» ' + name +' "с отрицательной ценой ');
вернуть это;
}
Функция еда (имя, цена) {
Product.call (это, имя, цена);
this.category = 'еда';
}
Food.prototype = new Product ();
var Cheese = новая еда ('feta', 5);
Консоль.log (сыр);
Здесь мы можем действительно понять, какой объект вызывает какой метод. В примере экземпляры объектов, созданные с использованием пищевого конструктора, будут иметь атрибуты имени и цены, добавленные в конструктор продукта, но атрибут категории определяется в соответствующем конструкторе.
Кода -копия выглядит следующим образом:
Функция печати (имя) {
console.log (this.p1 + '' + this.p2);
}
var h2 = function (no) {
this.p1 = "Привет";
this.p2 = "world";
print.call (это, "ничего");
};
H2 ();
Здесь H2 используется в качестве приемника для вызова функции. Как и в примере питания, в детском конструкторе вы можете реализовать наследование, вызывая метод вызова родительского конструктора.
Что касается преимуществ метода вызова, он вводится в «Эффективном JavaScript».
1. Используйте метод вызова, чтобы настроить приемник для вызова функции.
2. Используйте метод вызова, чтобы вызвать метод, который не существует в данном объекте.
3. Используйте метод вызова для определения функций высшего порядка, которые позволяют пользователям указать получателей для функций обратного вызова.