Function-objekt
Function-objekt representerar funktioner som du skapar i skriptmotorn, samt inbyggda funktioner.
Function-objekt kan ofta användas som konstruktorer i new-uttryck.
Egenskaper i Function-objekt
Function-objekt har följande egenskaper.
length
Indikerar det typiska antal argument som funktionen förväntar sig. Om funktionen anropas med färre argument, kommer de som saknas normalt antas ha värdet undefined. Denna egenskap har attributen DontDelete, ReadOnly och DontEnum.
prototype
Ett Object-objekt. När funktionen används i new-uttryck skapas ett nytt objekt vars prototyp är värdet av prototype-egenskapen. Denna egenskap har attributet DontDelete.
Function-konstruktorn
Normalt sett skapar man funktioner genom att använda nyckelordet function.
Exempel:
// Funktionsdeklaration
function factorial(n)
{
if(n <= 0) return 1;
return n*factorial(n-1);
}
// Variabel tilldelas värde av funktionsuttryck
var factorial = function factorial(n)
{
if(n <= 0) return 1;
return n*factorial(n-1);
}
// Anonym funktion
var factorial = function(n)
{
if(n <= 0) return 1;
return n*arguments.callee(n-1);
}
Du kan även anropa Function-konstruktorn.
new Function(p1, p2, …, pn, body)
Skapar ett nytt Function-objekt som har formella parametrar med namn p1, p2, … pn. Funktionskroppen sätts till body. De formella parametrarna kan utelämnas, eller slås ihop till en eller flera strängar.
Exempel:
Följande anrop skapar en funktion som summerar tre tal, och anropar den för att beräkna summan av 1, 2 och 3.
var sum = new Function("a", "b", "c", "return a+b+c");
return sum(1, 2, 3);
Exempel:
Följande uttryck ger samma resultat:
new Function("a", "b", "c", "return a+b+c")
new Function("a, b, c", "return a+b+c")
new Function("a,b", "c", "return a+b+c")
Function(p1, p2, …, pn, body)
När Function-konstruktorn anropas som en funktion skapas ett nytt Function-objekt precis som om du hade använt new.
Function-prototypen
Följande funktioner finns tillgängliga att anropa på Function-objekt.
De används t.ex. när du vill anropa en funktion som ligger som en egenskap i ett objekt med ett annat this-objekt än det objektet.
Function.prototype.apply(thisArg, argArray)
Utför ett funktionsanrop med det här Function-objektet.
Om thisArg är null eller undefined används det globala objektet som this-objekt för funktionsanropet. Annars används thisArg som this-objekt.
Om argArray är null eller undefined skickas inga argument till anropet av funktionen. Om argArray varken är ett Array-objekt eller ett Arguments-objekt, kastas ett TypeError-undantag. Annars skickas argumenten argArray[0], argArray[1], … argArray[argArray.length-1] till funktionen.
Function.prototype.call(thisArg, arg1, arg2, …)
Utför ett funktionsanrop med det här Function-objektet.
Om thisArg är null eller undefined används det globala objektet som this-objekt för funktionsanropet. Annars används thisArg som this-objekt.
De frivilliga parametrarna arg1, arg2 etc används som argument till funktionsanropet.