Rumah > hujung hadapan web > tutorial js > Analisis yang mendalam dan ringkas tentang penggunaan ini dalam kemahiran JavaScript_javascript

Analisis yang mendalam dan ringkas tentang penggunaan ini dalam kemahiran JavaScript_javascript

WBOY
Lepaskan: 2016-05-16 16:00:03
asal
1225 orang telah melayarinya

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();
Salin selepas log masuk

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();
Salin selepas log masuk

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();
Salin selepas log masuk

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();
Salin selepas log masuk

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);
Salin selepas log masuk
Hasil:

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();
Salin selepas log masuk
Proses baharu dibahagikan kepada tiga langkah berikut:
(1) var p={}; iaitu, mulakan objek p

(2) p.__proto__ = Orang.prototaip;
(3) Person.call(p); iaitu membina p, yang juga boleh dipanggil permulaan p

Kemudian mari kita bercakap tentang panggilan.

kaedah panggilan

Berlaku pada: Objek fungsi

Panggil kaedah pada objek untuk menggantikan objek semasa dengan objek lain.


panggil([thisObj[,arg1[, arg2[, [,.argN]]]]])

Parameter:

thisObj

Pilihan. Objek yang akan digunakan sebagai objek semasa.
arg1, arg2, , argN
Pilihan. Urutan parameter kaedah akan diluluskan.

Penerangan:

Kaedah panggilan boleh digunakan untuk memanggil kaedah bagi pihak objek lain. Kaedah panggilan menukar konteks objek fungsi daripada konteks awal kepada objek baharu yang ditentukan oleh thisObj. Jika parameter thisObj tidak disediakan, objek Global digunakan sebagai thisObj.


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.

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan