Przejdź do treści

Wybieranie funkcji do wykonania - call

Jak zbudować program, który pozwoli wybrać użytkownikowi funkcję, którą należy wykonać?

Function.prototype.call(thisArg)
Function.prototype.call(thisArg, arg1, arg2... argn)
Parametry:
thisArg - wartość bieżącego obiektu this dostępnego w czasie wywołania wewnątrz ciała funkcji
arg1, arg2... argn - lista argumentów wywołania funkcji
Wartość:
wartość którą normalnie zwraca funkcja
Wyjątki:
TypeError - nastąpiła próba wywołania na obiekcie, który nie jest funkcją

Działa analogicznie jak Object.prototype.apply, ale pozwala przekazać listę argumentów w sposób tradycyjny, a nie poprzez tablicę. Może to być przydatne, jeżeli wiemy z góry, jakie argumenty będziemy chcieli przekazać, ale w momencie tworzenia programu nie wiadomo jeszcze, którą funkcję będziemy chcieli wywołać.

Przykład Function.prototype.call

var f = function (a, b) {
    return a + b;
};
 
f(1, 2);                                 // 3
f.call(null, 1, 2);                      // 3
 
var Person = function (name) {
    this.name = name;
};
Person.prototype.speak = function (speech) {
    return this.name + ": " + speech;
};
 
var Computer = function (name) {
    this.name = name;
};
 
var obj = new Computer('HAL 9000');
var txt = 'My mind is going. I can feel it.';
Person.prototype.speak.call(obj, txt);   // "HAL 9000: My mind is going. I can feel it."
 
 
Function.prototype.call.call(null);      // TypeError
Function.prototype.call.call(undefined); // TypeError
Function.prototype.call.call("test");    // TypeError
Function.prototype.call.call({});        // TypeError

Komentarze

Zobacz więcej komentarzy

Facebook