Pemanggilan Fungsi JavaScript

Kode di dalam fungsi JavaScript akan dijalankan saat 'seseorang' memanggilnya.

Pemanggilan fungsi JavaScript

Ketika fungsi diDefinisiketika, kode di dalam fungsi tidak akan dijalankan.

Ketika fungsi diPemanggilanketika, kode di dalam fungsi akan dijalankan.

Pemanggilan fungsi biasanya juga disebut 'memulai fungsi' atau 'melaksanakan fungsi'.

Dalam tutorial ini, kami menggunakan “Pemanggilan”。

Pemanggilan fungsi dalam bentuk fungsi

实例

function myFunction(a, b) {
    return a * b;
}
myFunction(10, 2);           // akan kembalikan 20

亲自试一试

Fungsi di atas bukan milik objek manapun. Tetapi di JavaScript, selalu ada objek global baku.

Dalam HTML, objek global baku adalah halaman HTML sendiri, semua fungsi di atas 'milik' halaman HTML.

Dalam pelayar web, objek halaman ini adalah tingkap pelayar. Fungsi di atas secara otomatis menjadi fungsi tingkap.

myFunction() 和 window.myFunction() 是同一個函數:

实例

function myFunction(a, b) {
    return a * b;
}
window.myFunction(10, 2);    // 也會返回 20

亲自试一试

這是調用函數的常見方法,但並不是一個好習慣。

全局變量、方法或函數很容易在全局對象中產生命名衝突和漏洞。

this 關鍵詞

在 JavaScript 中,被稱為 this 的事物,指的是“擁有”當前程式碼的對象。

this 的值,在函數中使用時,是“擁有”該函數的對象。

請注意 this 並不是變量。它屬於關鍵詞。您無法改變 this 的值。

全局對象

當不帶擁有者對象調用對象時,this 的值成為全局對象。

在 web 浏覽器中,全局對象就是瀏覽器對象。

本例以 this 的值返回這個 window 對象:

实例

var x = myFunction();            // x 將成為 window 對象
function myFunction() {
   return this;
}

亲自试一试

調用一个函數作為全局函數,會導致 this 的值成為全局對象。

作為變量來使用 window 對象很容易使程序崩潰。

作為方法來調用函數

在 JavaScript 中,您可以把函數定義為對象方法。

下面的例子創建了一個對象(myObject),帶有兩個屬性(firstName 和 lastName),以及一個方法(fullName):

实例

var myObject = {
    firstName:\"Bill\",
    lastName: "Gates",
    fullName: function () {
        return this.firstName + " " + this.lastName;
    }
}
myObject.fullName();         // 將返回 "Bill Gates"

亲自试一试

fullName 方法是一個函數。該函數屬於對象。myObject 是函數的擁有者。

被稱為 this 的事物,是“擁有”這段 JavaScript 程式碼的對象。在此例中,this 的值是 myObject。

測試一下!修改這個 fullName 方法來返回 this 的值:

实例

var myObject = {
    firstName:\"Bill\",
    lastName: "Gates",
    fullName: function () {
        return this;
    }
}
myObject.fullName();          // 将返回 [object Object](擁有者對象)

亲自试一试

以对象方法来调用函数,会导致 this 的值成为对象本身。

通过函数构造器来调用函数

如果函数调用的前面是 new 关键字,那么这是一个构造函数调用。

它看起来像你创建一个新的函数,但由于 JavaScript 函数是对象,你实际上创建一个新对象:

实例

// 这是函数构造器:
function myFunction(arg1, arg2) {
    this.firstName = arg1;
    this.lastName  = arg2;
}
// 创建了一个新对象:
var x = new myFunction("Bill", "Gates");
x.firstName;                             // 会返回 "Bill"

亲自试一试

构造器调用会创建新对象。新对象会从其构造器继承属性和方法。

构造器内的 this 关键词没有值。

this 的值会成为调用函数时创建的新对象。