2013-12-14 4 views
-2

Я видел много кода java-script, который использует вызов, а также применяет методы для вызова функции. Я немного путаюсь в отношении точной разницы и в какой, какой из них использовать в каком состоянии.В чем разница между методом вызова и применения в jQuery

+0

взгляд на MDN документ [звонок] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/call), [применить] (https://developer.mozilla.org/en-US/документы/Web/JavaSc НИИИТ/Справка/Global_Objects/Функция/применить) –

ответ

3

Они не jQuery вещи, они вещи JavaScript.

Они делают то же самое: они вызывают данную функцию, используя определенное значение для this в вызове функции. Единственное различие заключается в том, как указать аргументы для передачи функции. С помощью call вы указываете их как ряд дискретных аргументов (после первого, который должен использоваться как this). С помощью apply вы указываете их как массив (снова после первого аргумента, который должен использоваться как this).

Так что у нас есть:

function foo(a, b, c) { 
    console.log("this = " + this); 
    console.log("a = " + a); 
    console.log("b = " + b); 
    console.log("a = " + c); 
} 

Эти два вызова делать то же самое:

foo.call("bar", 1, 2, 3); 
// Note --------^--^--^--- a series of discrete args 

foo.apply("bar", [1, 2, 3]); 
// Note ---------^-------^-- args as an array 

В обоих случаях мы видим:

 
this = bar 
a = 1 
b = 2 
c = 3
Смежные вопросы