Dalam es6, objek ini dalam badan fungsi anak panah ialah objek yang ditunjuk oleh skop di mana fungsi itu ditakrifkan. Titik ini dalam fungsi anak panah ialah titik objek dalam konteks Kadang-kadang, jika tiada objek konteks, ini menunjuk ke tetingkap walaupun memanggil, memohon, mengikat dan kaedah lain tidak boleh mengubah titik ini fungsi anak panah.
Persekitaran pengendalian tutorial ini: sistem Windows 7, ECMAScript versi 6, komputer Dell G3.
Saya percaya bahawa fungsi anak panah digunakan di banyak tempat dalam pembangunan harian, kerana ia sangat ringkas dan sangat mudah dibaca, tetapi faedah terbesar mereka sebenarnya ialah ia menyelesaikan masalah penunjuk fungsi tanpa nama ini fungsi panggil balik.
Mari kita mulakan dengan ringkasan:
Objek ini dalam badan fungsi anak panah ialah objek yang ditunjuk oleh skop di mana fungsi ditakrifkan, bukan skop di mana ia digunakan objek.
Dalam fungsi anak panah ES6 ini
(1) secara lalai menunjuk ke titik ini objek dalam konteks apabila ia ditakrifkan. Iaitu, titik ini dalam fungsi anak panah ES6 ialah titik objek dalam konteks Kadangkala, jika tiada objek konteks, ini akan menunjuk ke tetingkap
(2. ) Malah memanggil, memohon, mengikat dan kaedah lain tidak boleh Menukar penunjuk fungsi anak panah ini
Berikut adalah contoh fungsi biasa:
var name = 'window'; // 其实是window.name = 'window' var A = { name: 'A', sayHello: function(){ console.log(this.name) } } A.sayHello();// 输出A var B = { name: 'B' } A.sayHello.call(B);//输出B A.sayHello.call();//不传参数指向全局window对象,输出window.name也就是window
Seperti yang anda boleh lihat daripada di atas, kaedah sayHello ditakrifkan dalam objek A, apabila kita menggunakan kaedah panggilan, arahkan ke objek B, dan akhirnya output B boleh disimpulkan bahawa ini sayHello hanya berkaitan dengan objek digunakan.
Perbaharui:
var name = 'window'; var A = { name: 'A', sayHello: () => { console.log(this.name) } } A.sayHello();// 还是以为输出A ? 错啦,其实输出的是window
Saya percaya bahawa kebanyakan pelajar akan melakukan kesilapan di sini, memikirkan bahawa sayHello terikat kepada A, tetapi sebenarnya ia terikat kepada tingkap, maka Mengapa?
Pada mulanya, saya memfokuskan pada "objek yang ditunjuk oleh skop fungsi ini". skop terluar js, kerana tiada fungsi lain yang dibalut; maka objek yang ditunjuk oleh persekitaran js paling luar ialah objek winodw, jadi ini di sini menunjuk ke objek tetingkap.
Kemudian bagaimana untuk menukarnya untuk mengikat A selama-lamanya:
var name = 'window'; var A = { name: 'A', sayHello: function(){ var s = () => console.log(this.name) return s//返回箭头函数s } } var sayHello = A.sayHello(); sayHello();// 输出A var B = { name: 'B'; } sayHello.call(B); //还是A sayHello.call(); //还是A
OK, ini akan sentiasa menunjuk ke objek A, dan kemudian kita akan menggunakan "objek yang ditunjuk oleh skop di mana fungsi itu terletak" "Mari kita menganalisisnya:
Skop di mana fungsi terletak: Skop di mana fungsi anak panah s terletak ialah sayHello, kerana sayHello ialah fungsi.
Objek yang ditunjuk oleh skop: A. Objek yang ditunjuk oleh sayHello ialah A.
Jadi ini dalam fungsi anak panah s menunjuk ke A~~
----------------selesai--- ----------
Akhir sekali, terdapat beberapa perkara lain yang perlu diberi perhatian apabila menggunakan fungsi anak panah
tidak boleh digunakan sebagai pembina, maksudnya, arahan baru tidak boleh digunakan, jika tidak ralat akan dilemparkan.
Anda tidak boleh menggunakan objek argumen, yang tidak wujud dalam badan fungsi. Jika anda ingin menggunakannya, anda boleh menggunakan parameter selebihnya.
Arahan hasil tidak boleh digunakan, jadi fungsi anak panah tidak boleh digunakan sebagai fungsi Penjana.
[Pembelajaran yang disyorkan: tutorial video javascript]
Atas ialah kandungan terperinci Apakah maksud ini dalam kaedah anak panah es6?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!