Sunday, July 22, 2012

call()

Metode Function.call() memanggil metode dari fungsi yang lain untuk fungsi yang ada.

Sintaks:

functionObj.call(thisArg, param1, ..., paramN)
  • thisObj adalah opsional, anda bisa gunakan this.
  • param1, ..., paramN adalah satu atau lebih parameter yang akan dilewati oleh fungsi nantinya.

Function.call() adalah metode standard JavaScript 1.3+, JScript 1.0+, ECMAScript 3.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+.

Silahkan lihat contoh kode di bawah yang diberikan warna kuning.

Contoh di bawah ini fungsi bernama Person memanggil 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.call(this, name, age);"); var Me = Person; Me("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.call(this, name, age); } var Me = Person; Me("Gunawan", 27);

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

Contoh di bawah ini objek Function bernama Person menerapkan fungsi dari objek Function 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);

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);