Panggilan fungsi JavaScript

Panggilan fungsi JavaScript

Terdapat 4 cara untuk memanggil fungsi JavaScript.

Perbezaan antara setiap kaedah terletak pada permulaan ini.

kata kunci ini

Secara umumnya, dalam Javascript, ini menunjuk ke objek semasa apabila fungsi itu dilaksanakan.

Perhatikan bahawa ini ialah kata kunci simpanan, anda tidak boleh mengubah suai nilai ini.

Memanggil fungsi JavaScript

Dalam bab sebelumnya, kita telah mempelajari cara mencipta fungsi.

Kod dalam fungsi dilaksanakan selepas fungsi dipanggil.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<p>
全局函数 (myFunction) 返回参数参数相乘的结果:
</p>
<p id="demo"></p>
<script>
function myFunction(a, b) {
return a * b;
}
document.getElementById("demo").innerHTML = myFunction(10, 2); 
</script>
</body>
</html>

Fungsi di atas bukan milik mana-mana objek. Tetapi dalam JavaScript ia sentiasa menjadi objek global lalai.

Objek global lalai dalam HTML ialah halaman HTML itu sendiri, jadi fungsi itu tergolong dalam halaman HTML.

Objek halaman dalam penyemak imbas ialah tetingkap penyemak imbas (objek tetingkap). Fungsi di atas secara automatik akan menjadi fungsi objek tetingkap.

myFunction() dan window.myFunction() adalah sama:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<p>全局函数 myFunction() 会自动成为 window 对象的方法。</p>
<p>myFunction() 类似于 window.myFunction()。</p>
<p id="demo"></p>
<script>
function myFunction(a, b) {
    return a * b;
}
document.getElementById("demo").innerHTML = window.myFunction(10, 2); 
</script>
</body>
</html>

Ini ialah cara biasa untuk memanggil fungsi JavaScript, tetapi ia bukan amalan pengaturcaraan yang baik
Pembolehubah global, kaedah atau fungsi Pepijat yang mudah menyebabkan konflik penamaan.

Objek global

Apabila fungsi tidak dipanggil oleh objeknya sendiri, nilai ini akan menjadi objek global.

Dalam pelayar web, objek global ialah tetingkap penyemak imbas (objek tetingkap).

Nilai ini dikembalikan oleh kejadian ini ialah objek tetingkap:

rreee

Apabila fungsi dipanggil sebagai objek global, nilai ini menjadi objek global.
Menggunakan objek tetingkap sebagai pembolehubah boleh menyebabkan program ranap dengan mudah.

Fungsi dipanggil kaedah

Dalam JavaScript anda boleh mentakrifkan fungsi sebagai kaedah objek.

kaedah fullName ialah fungsi. Fungsi kepunyaan objek. myObject ialah pemilik fungsi tersebut.

Objek ini memegang kod JavaScript. Nilai ini dalam contoh ialah objek myObject.

Gunakan pembina untuk memanggil fungsi

Jika kata kunci baharu digunakan sebelum panggilan fungsi, pembina dipanggil.

Ini kelihatan seperti fungsi baharu dicipta, tetapi sebenarnya fungsi JavaScript ialah objek yang dicipta semula:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<p>在 HTML 中 <b>this</b> 的值, 在全局函数是一个 window 对象。</p>
<p id="demo"></p>
<script>
function myFunction() {
    return this;
}
document.getElementById("demo").innerHTML = myFunction(); 
</script>
</body>
</html>

Panggilan kepada pembina mencipta objek baharu. Objek baru mewarisi sifat dan kaedah pembina.

Kata kunci ini dalam pembina tidak mempunyai sebarang nilai.
Nilai ini dicipta apabila objek (objek baharu) dijadikan instantiated apabila fungsi dipanggil.

Panggil fungsi sebagai kaedah fungsi

Dalam JavaScript, fungsi ialah objek. Fungsi JavaScript mempunyai sifat dan kaedahnya.

call() dan apply() ialah kaedah fungsi yang dipratentukan. Dua kaedah boleh digunakan untuk memanggil fungsi, dan parameter pertama kedua-dua kaedah mestilah objek itu sendiri.

Instance

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<p>该实例中, myFunction 是函数构造函数:</p>
<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>

Instance

function myFunction(a, b) {
    return a * b;
}
myFunction.call(myObject, 10, 2);      // 返回 20

Kedua-dua kaedah menggunakan objek itu sendiri sebagai parameter pertama. Perbezaan antara kedua-duanya terletak pada parameter kedua: gunakan pas dalam tatasusunan parameter, iaitu, berbilang parameter digabungkan menjadi tatasusunan dan dihantar masuk, manakala panggilan diluluskan sebagai parameter panggilan (bermula dari parameter kedua).

Dalam mod ketat JavaScript (mod ketat), parameter pertama akan menjadi nilai ini apabila memanggil fungsi, walaupun parameter itu bukan objek.

Dalam mod tidak ketat JavaScript, jika nilai parameter pertama adalah batal atau tidak ditentukan, ia akan menggunakan objek global sebaliknya.

Dengan kaedah call() atau apply() anda boleh menetapkan nilai ini dan memanggilnya sebagai kaedah baharu pada objek sedia ada.


Meneruskan pembelajaran
||
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <p>myObject.fullName() 返回 John Doe:</p> <p id="demo"></p> <script> var myObject = { firstName:"John", lastName: "Doe", fullName: function() { return this.firstName + " " + this.lastName; } } document.getElementById("demo").innerHTML = myObject.fullName(); </script> </body> </html>