Object ng Function ng ECMAScript (klas)

Ang function ng ECMAScript ay tunay na buong bagay na may function.

Function object (klase)

Ang pinaka-kawili-wili sa ECMAScript ay ang katotohanan na ang function ay buong bagay na may function.

Ang klase Function ay maaaring ipakita anumang function na tinukoy ng developer.

Ang syntaxa para sa paglikha ng function gamit ang klase Function ay tulad nito:

var function_name = new function()arg1, arg2, ... , argN, function_body)

Sa paraan na ito, bawat arg Ang bawat isa ay may isang argumento, ang huling argumento ay ang function body (ang code na dapat isagawa). Ang mga argumento ay dapat na string.

Alam mo ba ang function na ito?

function sayHi(sName, sMessage) {
  alert("Hello " + sName + sMessage);
}

Maaari rin itong italaga sa paraan na ito:

var sayHi 
= 
new Function("sName", "sMessage", "alert("Hello " + sName + sMessage);");

Bagaman mahirap itong isulat dahil sa relasyon ng string, ito ay nakakatulong na maunawaan na ang function ay isang type na reference, at gumagana katulad ng function na pinagawa sa pamamagitan ng Function klase.

Huwag nang huwag magmasid sa halimbawa na ito:

function doAdd(iNum) {
  alert(iNum + 20);
}
function doAdd(iNum) {
  alert(iNum + 10);
}
doAdd(10);	//maglabas "20"

Kahit na alam mo, ang ikalawang function ay pinagsama-sama sa unang function, na ginagawa ng doAdd(10) na labas "20", hindi "30".

Kung maitatalaga ang kodigo na ito sa paraan na ito, mas malinaw ang konsepto:

var doAdd = new Function("iNum", "alert(iNum + 20)");
var doAdd = new Function("iNum", "alert(iNum + 10)");
doAdd(10);

Huwag nang huwag magmasid sa kodigo na ito, malinaw na ang halaga ng doAdd ay binago bilang pointer na patungo sa iba't ibang objekto. Ang pangalan ng function ay lamang ang reference na patungo sa objekto ng function, gumagana katulad ng ibang objekto. Kahit na maaaring magkaroon ng dalawang variable na patungo sa parehong function:

var doAdd = new Function("iNum", "alert(iNum + 10)");
var alsodoAdd = doAdd;
doAdd(10);	//maglabas "20"
alsodoAdd(10);	//maglabas "20"

Dito, ang variable na doAdd ay pinaghahati bilang function, at pagkatapos ay alisan doAdd bilang pointer na patungo sa parehong function. Maaaring gamitin ang dalawang variable upang magsagawa ng code ng function at maglabas ng magkaparehong resulta - "20". Kaya, kung ang pangalan ng function ay lamang ang reference na patungo sa function, maari baga nang ilipat ang function bilang argument sa ibang function? Ang sagot ay positibo!

function callAnotherFunc(fnFunction, vArgument) {
  fnFunction(vArgument);
}
var doAdd = new Function("iNum", "alert(iNum + 10)");
callAnotherFunc(doAdd, 10);	//magluluto "20"

Sa pagkakatuklas ng itaas, ang callAnotherFunc() ay may dalawang parameter - ang function na dapat itakbo at ang mga parameter na ipapasa sa function. Ang mga ito ay naglilipat ng doAdd() sa function na callAnotherFunc(), ang parameter ay 10, at nagluluto "20".

Babala:Bagaman maaaring gamitin ang constructor na Function para lumikha ng function, ito ay mas mabuti na huwag gamitin ito, dahil mas mabagal ito kaysa sa tradisyonal na paraan ng pagluluklok ng function. Gayunman, lahat ng function ay dapat tingnan bilang mga instance ng klase na Function.

Attribute na length ng Object ng Function

Tulad ng nabanggit, ang function ay isang uri ng reference type, kaya sila ay may mga attribute at method.

Ang attribute na length ng ECMAScript na tinukoy ay naglalarawan ng bilang ng mga inaasahang parameter ng function. Halimbawa:

function doAdd(iNum) {
  alert(iNum + 10);
}
function sayHi() {
  alert("Hi");
}
alert(doAdd.length);	//magluluto "1"
alert(sayHi.length);	//magluluto "0"

Ang function na doAdd() ay nagtatalaga ng isang parameter, kaya ang length ay 1; ang sayHi() ay walang tinukoy na parameter, kaya ang length ay 0.

Tandaan, kahit anong bilang ng mga parameter na tinukoy, maaaring tanggapin ng ECMAScript ang anumang bilang ng mga parameter (hanggang sa 25), ito ay itinuturo sa kabanata na 'Ulas ng Function'. Ang attribute na length ay nagbibigay ng isang madaling paraan para makita ang inaasahang bilang ng mga parameter sa bawa't pagkakataon.

Mga method ng Object ng Function

Ang mga method ng Object ng Function ay nakikilala ng lahat ng mga object at may valueOf() at toString() method. Ang dalawa ay binabalik ng mga method na ito ay ang pinagmulang kodigo ng function, na napaka-kapaki-pakinabang sa debugging. Halimbawa:

function doAdd(iNum) {
  alert(iNum + 10);
}
document.write(doAdd.toString());

Ang mga nakasulat sa itaas ay nagluluto ng teksto ng function na doAdd().Subukan Ngayon!