Kod badan fungsi akan dilaksanakan apabila fungsi dipanggil.
Fungsi Javascript mempunyai 4 kaedah panggilan:
Panggilan fungsi biasa
Panggilan kaedah
Panggilan Pembina
Dengan panggilan( ) dan gunakan () panggilan tidak langsung
1. Panggilan fungsi biasa
Kaedah panggilan fungsi yang paling biasa digunakan, seperti:
alert("hello");
var result = add(1, 2);
2 >
//Tentukan fungsifungsi hello(nama) {
alert('hello,' + nama) ;
};
var user = {};
// Tetapkan atribut sayHi kepada pengguna
//Panggilan kaedah
Satu perbezaan antara panggilan fungsi biasa dan panggilan kaedah: dalam "biasa Dalam " fungsi panggilan", konteks panggilan fungsi (nilai ini) ialah objek global (mod tidak ketat) atau tidak ditentukan (mod ketat). Dalam kaedah "panggilan kaedah", ini menunjuk kepada objek semasa. Menggunakan ciri ini, kami boleh mengembalikannya secara langsung apabila kaedah tersebut tidak memerlukan nilai pulangan yang jelas, dengan itu merealisasikan "perantaian kaedah".
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> function myFunction(a, b) { return a * b; } document.getElementById("demo").innerHTML = myFunction(10, 2); </script> </body> </html>
Ini dalam fungsi bersarang: Dalam fungsi bersarang, fungsi dalam tidak akan mewarisi fungsi luar ini, iaitu, apabila fungsi dalam dipanggil sebagai kaedah, fungsi dalam ini menghala ke objek panggilan semasa ;Apabila fungsi dalaman dipanggil sebagai fungsi, nilai ini ialah objek global (mod tidak ketat) atau tidak ditentukan (mod ketat). Bagaimana untuk mengakses fungsi luar ini dalam fungsi dalam? Ini biasanya disimpan dalam pembolehubah tempatan dan diakses melalui pembolehubah:
var obj = {f : function() {
var self = this;
console.log(this === obj);//true, ini menunjuk ke objek semasa
f1();
fungsi f1() {
><🎜 }
}
} ;
3 Apabila objek dicipta menggunakan kata kunci baharu, pembina dipanggil. Jika pembina tidak mempunyai parameter formal, anda boleh meninggalkan kurungan:
var obj = new Object();
//Setara dengan
var obj = Objek baharu;
Panggil pembina dan cipta objek baharu ini akan menjadi konteks panggilan pembina (nilai ini):
fungsi Pengguna(nama) {<🎜. >
this.name=name;
console.debug(this);
}
var user = new User('Zhang San');
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> </head> <body> <p id="demo"></p> <script> function myFunction(arg1, arg2) { this.firstName = arg1; this.lastName = arg2; } var x = new myFunction("John","Doe") document.getElementById("demo").innerHTML = x.firstName; </script> </body> </html>
4 Melalui call() dan apply(. ) Panggilan tidak langsung
var name = 'A';
var user = {
nama : 'B'
};
function showName() {
alert(this.name);
}
showName();//A, ini ialah objek global
showName.call(user);//B, ini ialah objek pengguna
apply() serupa dengan call( ), tetapi perbezaan Masalahnya ialah parameter sebenar berikutnya perlu diluluskan dalam bentuk tatasusunan (tatasusunan hujah bagi fungsi semasa boleh dihantar secara langsung).