Contoh dalam artikel ini menerangkan penggunaan ini dalam javaScript. Kongsikan dengan semua orang untuk rujukan anda. Analisis khusus adalah seperti berikut:
Semasa saya belajar JavaScript dahulu, saya tidak dapat memahami ini. Ini tidak semudah ini di java. Saya kemudian memahaminya selepas membaca banyak artikel yang ditulis oleh orang lain. Sekarang saya beralih kepada apa yang ditulis oleh orang lain, supaya saya tidak melupakannya kemudian.
Secara amnya, terdapat tiga jenis arah untuk ini. Menunjuk ke tetingkap global, objek dan pembina.
Kesimpulan: Dalam Javascript, ini menunjuk ke objek semasa apabila fungsi itu dilaksanakan. Secara ringkasnya, objek mana yang dimiliki oleh kaedah yang dipanggil, ini menunjukkan objek itu.
1. Tetingkap global
Kod ringkas
var message = "this in window"; var printMessage = function(){ console.info(this === window); console.info(this.message); }; printMessage();
Oleh kerana kaedah panggilan printMessage milik tetingkap, hasil output ialah:
benar ini dalam tetingkap
Sekarang jika anda menukar kod menjadi lebih rumit
var message = "this in window"; var printMessage = function(){ console.info(this === window); console.info(this.message); }; var obj = { message: 'this in obj', printMsg : function(){ printMessage(); } }; obj.printMessage();
Pada masa ini, kaedah printMessage adalah milik tetingkap, jadi ini masih menunjuk ke tetingkap. Kaedah obj.printMessage tergolong dalam objek obj Lihat analisis di bawah.
Jadi hasil output masih: benar ini dalam tetingkap
2. Objek
Sekarang lihat pada objek dan tukar sedikit kod
var message = "this in window"; var printMessage = function(){ console.info(this === window); console.info(this.message); }; var obj = { message: 'this in obj', printMessage : window.printMessage }; obj.printMessage();
Hasil:
palsu ini dalam obj
Ya, anda betul. Ia masih merupakan kesimpulan daripada langkah sebelumnya Kaedah obj.printMessage tergolong dalam objek obj, jadi ini menunjukkan kepada obj.
Baiklah, jangan risau lagi, lihat kod:
var message = "this in window"; var printMessage = function(){ console.info(this === window); console.info(this.message); }; var obj = { message: 'this in obj', printMessage : function(){ var obj2 = { message:'this in obj2', printMessage: window.printMessage }; obj2.printMessage(); } }; obj.printMessage();
Panggilan terakhir ialah obj2.printMessage(), jadi apabila ini dilaksanakan, ini ialah obj2
Hasil:
salah, ini dalam obj2
Haha, adakah sama seperti yang anda fikirkan. Siapa yang memanggilnya tunjuk kepada siapa.
3
var Person = function(){ this.age = 1; this.name = 'no name'; }; var p = new Person(); console.info('age = ' + p.age); console.info('name = ' + p.name);
umur = 1 nama = tiada nama.
Jadi apa yang pembina lakukan untuk ini? "
Memahami rantaian prototaip javaScript dalam istilah mudah" yang disebut sebelum ini termasuk analisis yang baharu.
var Person = function(){}; var p = new Person();
(2) p.__proto__ = Orang.prototaip;
(3) Person.call(p); iaitu membina p, yang juga boleh dipanggil permulaan p
Kemudian mari kita bercakap tentang panggilan.
Berlaku pada: Objek fungsi
Panggil kaedah pada objek untuk menggantikan objek semasa dengan objek lain.
Parameter:
thisObj
Pilihan. Objek yang akan digunakan sebagai objek semasa.
arg1, arg2, , argN
Pilihan. Urutan parameter kaedah akan diluluskan.
Penerangan:
Jelaskan bahawa fungsi kaedah panggilan sebenarnya adalah untuk menukar titik ini kaedah lalai. Kaedah panggilan mestilah objek kaedah Apabila panggilan dipanggil, titik ini objek kaedah akan menjadi parameter pertama kaedah panggilan.
var p = Orang baharu();
Apabila Orang pembina dipanggil, ia boleh diproses melalui panggilan, supaya ini dalam Orang menghala ke p This.age = 1 adalah bersamaan dengan p.age = 1, supaya atribut umur ditambahkan pada p.Saya harap artikel ini akan membantu reka bentuk pengaturcaraan JavaScript semua orang.