Rumah >hujung hadapan web >tutorial js >Mengapa Anda Perlu Mengelak Fungsi Anak Panah Semasa Menentukan Kaedah Objek ES6?

Mengapa Anda Perlu Mengelak Fungsi Anak Panah Semasa Menentukan Kaedah Objek ES6?

Patricia Arquette
Patricia Arquetteasal
2024-12-23 05:06:27721semak imbas

Why Should You Avoid Arrow Functions When Defining ES6 Object Methods?

Menggunakan Fungsi Anak Panah dalam Objek ES6

Dalam ES6, terdapat dua cara untuk menentukan kaedah objek: menggunakan sintaks fungsi tradisional dan menggunakan trengkas bentuk. Kedua-dua kaedah ini adalah sah:

var chopper = {
    owner: 'Zed',
    getOwner: function() { return this.owner; }
};
var chopper = {
    owner: 'Zed',
    getOwner() { return this.owner; }
}

Walau bagaimanapun, menggunakan fungsi anak panah dalam kaedah objek memberikan cerita yang berbeza. Mari kita terokai perkara ini dengan lebih terperinci.

Fungsi Anak Panah dan Kaedah Objek

Fungsi anak panah tidak sesuai untuk mentakrifkan kaedah objek. Ini kerana mereka mewarisi nilai ini konteks leksikal sekeliling, yang mungkin tidak sama dengan nilai ini dalam objek.

Sebagai contoh, pertimbangkan kod berikut:

var chopper = {
    owner: 'John',
    getOwner: () => { return this.owner; }
};

Dalam contoh ini, ini dalam kaedah getOwner merujuk kepada objek tetingkap (atau objek globalThis dalam mod ketat), bukan objek pencincang. Akibatnya, ungkapan this.owner akan kembali tidak ditentukan, membuang ralat.

Sintaks Fungsi Tradisional lwn. Sintaks Kaedah ES6

Untuk mentakrifkan kaedah objek, ia adalah dinasihatkan untuk menggunakan sintaks fungsi tradisional atau sintaks kaedah ES6, yang kedua-duanya secara eksplisit mentakrifkan nilai ini dalam kaedah.

Berikut ialah contoh menggunakan sintaks fungsi tradisional:

var chopper = {
    owner: 'Zed',
    getOwner: function() {
        return this.owner;
    }
};

Dan berikut ialah contoh menggunakan sintaks kaedah ES6:

var chopper = {
    owner: 'Zed',
    getOwner() {
        return this.owner;
    }
};

Kaedah ini menggunakan kata kunci ini untuk rujuk kepada objek semasa, memastikan bahawa ungkapan this.owner mengembalikan yang betul nilai.

Kesimpulan

Walaupun fungsi anak panah menawarkan sintaks ringkas untuk mentakrifkan fungsi mudah, ia tidak sesuai digunakan sebagai kaedah objek dalam ES6. Untuk tujuan ini, adalah disyorkan untuk berpegang pada sintaks fungsi tradisional atau sintaks kaedah ES6, yang kedua-duanya menyediakan cara yang lebih jelas dan boleh dipercayai untuk menentukan kaedah pada objek.

Atas ialah kandungan terperinci Mengapa Anda Perlu Mengelak Fungsi Anak Panah Semasa Menentukan Kaedah Objek ES6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn