Sunday, July 22, 2012

apply()

Metode Function.apply() menerapkan metode dari fungsi yang lain untuk fungsi yang ada.

Sintaks:

functionObj.apply(thisObj, argsArray)
  • thisObj adalah opsional, anda bisa gunakan this.
  • argsArray adalah parameter-parameter yang akan dilewati oleh fungsi nantinya.

Function.apply() adalah metode standard JavaScript 1.3+, JScript 1.0+, ECMAScript 1.0+ dan di dukung Google Chrome Beta+, Firefox 1.0 (Gecko 1.7)+, Internet Explorer 3+, Netscape Navigator 6.0(Gecko 0.6)+, Opera 3.0+, Safari 1.0+.

Contoh di bawah ini fungsi bernama Person menerapkan metode dari fungsi bernama showData:

var showData = new Function("alert(this.name + ' : ' + this.age);"); var Person = new Function("name", "age", "this.name = name; this.age = age; showData.apply(this, [name, age]);"); var Me = Person; Me("Gunawan", 27); // "Gunawan : 27"

Akan sama jika anda menuliskannya seperti di bawah ini:

function showData() { alert(this.name + " : " + this.age); } function Person(name, age) { this.name = name; this.age = age; showData.apply(this, [name, age]); } var Me = Person; Me("Gunawan", 27);

Function.apply() dan Function.call() bersifat sama, satu-satunya perbedaannya adalah bahwa metode Function.apply() melewati parameter-parameternya sebagai array.

Contoh di bawah ini sama seperti di atas, yaitu fungsi bernama Person menerapkan metode dari fungsi bernama showData, tetapi kali ini parameternya menggunakan Function.arguments:

var showData = new Function("alert(this.name + ' : ' + this.age);"); var Person = new Function("name", "age", "this.name = name; this.age = age; showData.apply(this, arguments);"); var Me = Person; Me("Gunawan", 27); // "Gunawan : 27"

Akan sama jika anda menuliskannya seperti di bawah ini:

function showData() { alert(this.name + " : " + this.age); } function Person(name, age) { this.name = name; this.age = age; showData.apply(this, arguments); } var Me = Person; Me("Gunawan", 27);