Fungsi panah tidak dirancang untuk digunakan dalam setiap situasi hanya sebagai versi pendek dari fungsi kuno. Mereka tidak dimaksudkan untuk menggantikan sintaks fungsi menggunakan functionkata kunci. Kasus penggunaan paling umum untuk fungsi panah adalah "lambda" singkat yang tidak didefinisikan ulang this, sering digunakan saat meneruskan fungsi sebagai callback ke beberapa fungsi.
Fungsi panah tidak dapat digunakan untuk menulis metode objek karena, seperti yang Anda temukan, karena fungsi panah dekat dengan thiskonteks yang melingkupi secara leksikal, thispanah di dalam adalah yang ada saat ini di mana Anda mendefinisikan objek. Artinya:
var chopper = {
owner: 'Zed',
getOwner: () => {
return this.owner;
}
};
Dalam kasus Anda, ingin menulis metode pada objek, Anda cukup menggunakan functionsintaks tradisional , atau sintaks metode yang diperkenalkan di ES6:
var chopper = {
owner: 'Zed',
getOwner: function() {
return this.owner;
}
};
var chopper = {
owner: 'Zed',
getOwner() {
return this.owner;
}
};
(Ada perbedaan kecil antara mereka, tapi mereka hanya penting jika Anda menggunakan superdalam getOwner, yang Anda tidak, atau jika Anda menyalin getOwnerke obyek lain.)
Ada beberapa perdebatan di milis es6 tentang twist pada fungsi panah yang memiliki sintaks yang mirip tetapi dengan fungsinya sendiri this. Namun, proposal ini diterima dengan buruk karena itu hanyalah gula sintaks, memungkinkan orang untuk menyimpan pengetikan beberapa karakter, dan tidak menyediakan fungsionalitas baru atas sintaks fungsi yang ada. Lihat topik fungsi panah tak terikat .
thisberbeda. Ini ditentukan oleh lingkungan leksikal tempat fungsi itu dibuat, yang berartithisnilai tempat Anda membuatchoppervariabel akan menjadithisnilai fungsi. Dengan kata lain, itu tidak akan mereferensikanchopperobjek.