Panggilan fungsi JavaScript

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 fungsi

fungsi hello(nama) {

alert('hello,' + nama) ;

};

var user = {};

// Tetapkan atribut sayHi kepada pengguna

pengguna.sayHi = hello;

//Panggilan kaedah

user.sayHi('Zhang San');

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() {

                                  console.log(ini === obj);//false, ini adalah objek global atau undefined true, self menunjuk ke luar ini, iaitu, objek semasa

><🎜 }

}

} ;

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

Fungsi dalam Javascript juga merupakan objek dan mempunyai kaedah. Antaranya, call() dan apply() boleh digunakan untuk memanggil fungsi secara tidak langsung. Parameter pertama panggilan() digunakan untuk menentukan konteks panggilan (iaitu, nilai ini), dan parameter seterusnya ialah parameter sebenar yang dihantar ke dalam fungsi panggilan.

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



Meneruskan pembelajaran
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>php中文网(php.cn)</title> <script type="text/javascript"> function sum(x,y){ return x+y; } result = sum(2,3); document.write( result ); </script> </head> <body> </body> </html>
  • Cadangan kursus
  • Muat turun perisian kursus