Rumah >hujung hadapan web >tutorial js >Bolehkah Fungsi Anak Panah Digunakan sebagai Kaedah Objek ES6?

Bolehkah Fungsi Anak Panah Digunakan sebagai Kaedah Objek ES6?

Barbara Streisand
Barbara Streisandasal
2024-12-21 19:12:17822semak imbas

Can Arrow Functions Be Used as ES6 Object Methods?

Fungsi Anak Panah dalam Objek ES6: Limbo Sintaks

Dalam ES6, kaedah objek boleh ditakrifkan menggunakan sintaks fungsi tradisional atau sintaks kaedah ringkas. Walau bagaimanapun, bolehkah kita memanfaatkan fungsi anak panah yang baru diperkenalkan dalam konteks ini?

Percubaan Penggunaan dan Ralat Ditemui:

Percubaan untuk menggunakan fungsi anak panah sebagai kaedah objek, seperti ditunjukkan di bawah , menghasilkan satu ralat:

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

Penaakulan:

Fungsi anak panah tidak berfungsi seperti yang diharapkan dalam kaedah objek kerana ia menangkap nilai leksikal ini, yang berada di luar konteks objek. Ini menyebabkan ini merujuk kepada global this atau this bagi fungsi leksikal melampirkan, bukan contoh objek.

Alternatif dan Syor:

Untuk kaedah objek, tradisional sintaks fungsi atau sintaks kaedah ES6 harus digunakan:

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

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

Tidak terikat Fungsi Anak Panah (Cadangan Ditolak):

Terdapat cadangan untuk fungsi anak panah tidak terikat yang akan memperkenalkan sintaks yang serupa dengan fungsi anak panah tetapi dengan pengikatan ini yang berasingan. Walau bagaimanapun, cadangan ini telah ditolak kerana ia semata-mata mengurangkan boilerplate tanpa menawarkan sebarang fungsi baharu.

Atas ialah kandungan terperinci Bolehkah Fungsi Anak Panah Digunakan sebagai 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