Rumah hujung hadapan web tutorial js JS中的this指向问题?2018最全this指向解释

JS中的this指向问题?2018最全this指向解释

Oct 11, 2018 pm 04:41 PM

本篇文章给大家带来的内容是关于JS中的this指向问题?2018最全this指向解释,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 

微信截图_20181011164218.png

this,被谁调用就指向谁

在全局下的this

console.log(this)  //这里的this是全局下的this, 因此这个this默认指向的是BOM的顶级对象window
Salin selepas log masuk

在函数中的this

var fn = function() {
	console.log(this)}fn()	//window
Salin selepas log masuk

这里的this是函数fn里的this,而fn函数是被window调用的, 因此这个函数中的this指向window

对象中的this

var obj = {
	name: 'zhang',
	fnObj: function() {
		console.log(this)
	}}obj.fnObj()  //obj
Salin selepas log masuk

在obj对象中定义了一个fnObj方法, 在其中打印this, 因为fnObj是被obj这个对象调用的, 所以这个函数中的this指向是他的调用者obj

构造函数中的this

var func = function(ele) {
	console.log(this)  //func}var newFu = new func('p')
Salin selepas log masuk

构造函数中的this就是指向这个构造函数本身

var func = function(ele) {
	this.box = document.querySelector('p')
	this.box.onclick = function() {
		console.log(this)   //p
	}}
Salin selepas log masuk

在构造函数中获取一个标签, 并且为这个标签添加一个事件, 这个事件中的this指向的是调用这个事件的p

箭头函数中的this

在DOM&BOM环境下的箭头函数

箭头函数中的this,是继承过来的, 也就是说, 箭头函数中的this,会继承其父级的this指向, 上文的this指向哪里, 箭头函数中的this就会指向哪里

var a = {
	b : function(){
		var func = ()=> {
			console.log(this);  //这里的this指向a这个对象
		}
		func();
	},
	c : 'Hello!'}a.b()
Salin selepas log masuk

箭头函数func的父级是b函数, b函数被a调用, 因此b函数的this指向a, 因此func箭头函数的this会继承b函数中的this指向, 此外, 箭头函数中的this,不会被apply,call,bind所改变

var a = {
  b : () => {
    console.log(this)   //指向window
    var func = ()=> {
      console.log(this);  //这里的this指向window
    }
    func();
  },
  c : 'Hello!'}a.b()
Salin selepas log masuk

箭头函数func的this继承自箭头函数b, 箭头函数b的this继承自他的父级a对象, 因为a对象是window创建出来的, 因此箭头函数b的this指向window, 箭头函数func继承箭头函数b的this,因此也指向window

在nodeJS环境下的箭头函数
module.exports.b = 'haha'var b = 'asdvar a = {
  b: 'name',
  c: ()=>{
   console.log(this.b)  //haha
  }}a.c()
Salin selepas log masuk

在node中箭头函数中的this指向也会继承其上一级的this指向, 只不过这里没有window对象了, 而是指向了module.exports这个对象

以上就是对JS中的this指向问题?2018最全this指向解释的全部介绍,如果您想了解更多有关JavaScript视频教程,请关注PHP中文网。

Atas ialah kandungan terperinci JS中的this指向问题?2018最全this指向解释. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri? Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri? Mar 18, 2025 pm 03:12 PM

Artikel membincangkan membuat, menerbitkan, dan mengekalkan perpustakaan JavaScript, memberi tumpuan kepada perancangan, pembangunan, ujian, dokumentasi, dan strategi promosi.

Bagaimanakah saya mengoptimumkan kod JavaScript untuk prestasi dalam penyemak imbas? Bagaimanakah saya mengoptimumkan kod JavaScript untuk prestasi dalam penyemak imbas? Mar 18, 2025 pm 03:14 PM

Artikel ini membincangkan strategi untuk mengoptimumkan prestasi JavaScript dalam pelayar, memberi tumpuan kepada mengurangkan masa pelaksanaan dan meminimumkan kesan pada kelajuan beban halaman.

Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apa yang perlu saya lakukan jika saya menghadapi percetakan kod yang dihiasi untuk resit kertas terma depan? Apr 04, 2025 pm 02:42 PM

Soalan dan penyelesaian yang sering ditanya untuk percetakan tiket kertas terma depan dalam pembangunan front-end, percetakan tiket adalah keperluan umum. Walau bagaimanapun, banyak pemaju sedang melaksanakan ...

Bagaimanakah saya boleh debug kod javascript dengan berkesan menggunakan alat pemaju pelayar? Bagaimanakah saya boleh debug kod javascript dengan berkesan menggunakan alat pemaju pelayar? Mar 18, 2025 pm 03:16 PM

Artikel ini membincangkan debugging JavaScript yang berkesan menggunakan alat pemaju pelayar, memberi tumpuan kepada menetapkan titik putus, menggunakan konsol, dan menganalisis prestasi.

Siapa yang dibayar lebih banyak Python atau JavaScript? Siapa yang dibayar lebih banyak Python atau JavaScript? Apr 04, 2025 am 12:09 AM

Tidak ada gaji mutlak untuk pemaju Python dan JavaScript, bergantung kepada kemahiran dan keperluan industri. 1. Python boleh dibayar lebih banyak dalam sains data dan pembelajaran mesin. 2. JavaScript mempunyai permintaan yang besar dalam perkembangan depan dan stack penuh, dan gajinya juga cukup besar. 3. Faktor mempengaruhi termasuk pengalaman, lokasi geografi, saiz syarikat dan kemahiran khusus.

Bagaimanakah saya menggunakan peta sumber untuk debug kod JavaScript minified? Bagaimanakah saya menggunakan peta sumber untuk debug kod JavaScript minified? Mar 18, 2025 pm 03:17 PM

Artikel ini menerangkan cara menggunakan peta sumber untuk debug JavaScript minifikasi dengan memetakannya kembali ke kod asal. Ia membincangkan membolehkan peta sumber, menetapkan titik putus, dan menggunakan alat seperti Chrome Devtools dan Webpack.

Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Bagaimana untuk menggabungkan elemen array dengan ID yang sama ke dalam satu objek menggunakan JavaScript? Apr 04, 2025 pm 05:09 PM

Bagaimana cara menggabungkan elemen array dengan ID yang sama ke dalam satu objek dalam JavaScript? Semasa memproses data, kita sering menghadapi keperluan untuk mempunyai id yang sama ...

Demystifying JavaScript: Apa yang berlaku dan mengapa penting Demystifying JavaScript: Apa yang berlaku dan mengapa penting Apr 09, 2025 am 12:07 AM

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

See all articles