fungsi JavaScript dapat dipanggil dalam 4 cara yang berbeda.
Setiap metode berbeda dalam cara this diinisialisasi.
The this Kata Kunci
Dalam JavaScript, hal yang disebut this , adalah objek yang "memiliki" kode saat ini.
Nilai this , bila digunakan dalam fungsi, adalah objek yang "memiliki" fungsi.
Perhatikan bahwa this bukan variabel. Ini adalah kata kunci. Anda tidak dapat mengubah nilai this .
Meminjam Fungsi JavaScript
Anda telah belajar bahwa kode di dalam fungsi JavaScript akan mengeksekusi ketika "sesuatu" memanggil itu.
Kode fungsi tidak dijalankan ketika fungsi didefinisikan. Hal ini dijalankan ketika fungsi dipanggil.
Beberapa orang menggunakan istilah "memanggil fungsi" bukan "memanggil fungsi".
Hal ini juga cukup umum untuk mengatakan "memanggil fungsi", "memulai fungsi", atau "melaksanakan fungsi".
Dalam tutorial ini, kita akan menggunakan Invoke, karena fungsi JavaScript dapat dipanggil tanpa dipanggil.
Meminjam Fungsi sebagai Fungsi
Contoh
function myFunction(a, b) {
return a * b;
}
myFunction(10, 2); // myFunction(10, 2) will return 20
Cobalah sendiri " Fungsi di atas bukan milik objek apapun. Namun dalam JavaScript selalu ada obyek global default.
Dalam HTML default obyek global adalah halaman HTML itu sendiri, sehingga fungsi di atas "milik" ke halaman HTML.
Dalam browser halaman objek adalah jendela browser. Fungsi di atas secara otomatis menjadi fungsi jendela.
myFunction() dan window.myFunction() adalah fungsi yang sama:
Contoh
function myFunction(a, b) {
return a * b;
}
window.myFunction(10, 2); // window.myFunction(10, 2) will also return 20
Cobalah sendiri " Ini adalah cara umum untuk memanggil fungsi JavaScript, tapi tidak praktek yang sangat baik.
variabel global, metode, atau fungsi dapat dengan mudah membuat konflik nama dan bug di obyek global.
Objek global
Ketika fungsi ini disebut tanpa obyek pemilik, nilai this menjadi obyek global.
Dalam web browser obyek global adalah jendela browser.
Contoh ini mengembalikan objek jendela sebagai nilai this :
Contoh
function myFunction() {
return this;
}
myFunction(); // Will return the window object
Cobalah sendiri " Meminjam fungsi sebagai fungsi global, menyebabkan nilai this menjadi obyek global.
Menggunakan objek jendela sebagai variabel dapat dengan mudah crash program Anda.
Meminjam Fungsi sebagai Metode a
Dalam JavaScript Anda dapat mendefinisikan fungsi sebagai metode objek.
Contoh berikut membuat sebuah objek ( myObject ), dengan dua sifat ( firstName dan lastName ), dan metode ( fullName ):
Contoh
var myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this.firstName + " " + this.lastName;
}
}
myObject.fullName(); // Will return "John Doe"
Cobalah sendiri " The fullName metode adalah fungsi. Fungsi milik objek. myObject adalah pemilik fungsi.
Hal yang disebut this , adalah objek yang "memiliki" kode JavaScript. Dalam hal ini nilai this adalah myObject .
Menguji! Mengubah fullName metode untuk mengembalikan nilai this :
Contoh
var myObject = {
firstName:"John",
lastName: "Doe",
fullName: function () {
return this;
}
}
myObject.fullName(); // Will return [object Object] (the owner object)
Cobalah sendiri " Meminjam fungsi sebagai metode objek, menyebabkan nilai this menjadi obyek itu sendiri.
Meminjam Fungsi dengan Fungsi Constructor
Jika pemanggilan fungsi diawali dengan new kata kunci, itu adalah doa konstruktor.
Sepertinya Anda membuat fungsi baru, tetapi karena fungsi JavaScript adalah obyek Anda benar-benar membuat objek baru:
Contoh
// This is a function constructor:
function myFunction(arg1, arg2) {
this.firstName = arg1;
this.lastName = arg2;
}
// This creates a new object
var x = new myFunction("John","Doe");
x.firstName;
// Will return "John"
Cobalah sendiri " Sebuah doa konstruktor menciptakan objek baru. Objek baru mewarisi sifat dan metode dari konstruktor.
The this kata kunci dalam konstruktor tidak memiliki nilai.
Nilai this akan menjadi objek baru dibuat ketika fungsi dipanggil.
Meminjam Fungsi dengan Fungsi Metode
Dalam JavaScript, fungsi adalah obyek. fungsi JavaScript memiliki sifat dan metode.
call() dan apply() adalah yang telah ditetapkan metode fungsi JavaScript. Kedua metode dapat digunakan untuk memanggil fungsi, dan kedua metode harus memiliki objek pemilik sebagai parameter pertama.
Contoh
function myFunction(a, b) {
return a * b;
}
myObject = myFunction.call(myObject, 10, 2); // Will return 20
Cobalah sendiri " Contoh
function myFunction(a, b) {
return a * b;
}
myArray = [10, 2];
myObject =
myFunction.apply(myObject, myArray); // Will also return 20
Cobalah sendiri " Kedua metode mengambil objek pemilik sebagai argumen pertama. Satu-satunya perbedaan adalah bahwa call() mengambil argumen fungsi secara terpisah, dan apply() mengambil argumen fungsi dalam array.
Dalam modus JavaScript ketat, argumen pertama menjadi nilai this dalam fungsi dipanggil, bahkan jika argumen bukan objek.
Dalam mode "non-ketat", jika nilai argumen pertama adalah null atau undefined, maka diganti dengan obyek global.
Dengan call() atau apply() Anda dapat mengatur nilai this , dan memanggil fungsi sebagai metode baru dari objek yang ada.