Przejdź do treści

Function.prototype

call

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:

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

Zobacz także

  • js
    Function / Function

    Jak utworzyć funkcję już po uruchomieniu programu?

  • js
    Function / new Function

    Jak napisać program, który pozwoli dynamicznie utworzyć funkcję, na podstawie kodu wprowadzonego przez użytkownika? Jak sprawdzić, ile argumentów przyjmuje funkcja?

  • js
    Function / length

    Czy Function.length zawiera tę samą wartość co Function.prototype.length?

Komentarze

Zobacz więcej komentarzy