Rumah > hujung hadapan web > tutorial js > Apa itu ' ini ' Dalam JavaScript?

Apa itu ' ini ' Dalam JavaScript?

Christopher Nolan
Lepaskan: 2025-03-04 01:15:17
asal
990 orang telah melayarinya

What is 'this' in JavaScript?

mata teras

  • Dalam JavaScript biasanya merujuk kepada objek yang "memiliki" kaedah, tetapi ia bergantung kepada bagaimana fungsi dipanggil. this
  • Apabila tiada objek semasa,
  • merujuk kepada objek global. Dalam pelayar web, ia diwakili oleh this. window
  • Apabila memanggil fungsi,
  • menyimpan objek global; this this anda boleh mengubah konteks
  • menggunakan kaedah seperti
  • , call() dan apply(). Kaedah ini memanggil fungsi menggunakan nilai dan parameter yang diberikan. bind() this this JavaScript adalah bahasa pengaturcaraan yang sangat baik. Kalimat ini mungkin telah kontroversial beberapa tahun yang lalu, tetapi pemaju telah menemui semula keindahan dan keanggunannya. Sekiranya anda tidak suka JavaScript, mungkin kerana:

Anda menghadapi perbezaan atau masalah dengan API penyemak imbas - ini bukan kesalahan JavaScript itu sendiri.

    Anda membandingkannya dengan bahasa berasaskan kelas seperti C, C#, atau Java-dan JavaScript tidak berkelakuan seperti yang anda harapkan.
  • Kata kunci adalah salah satu konsep yang paling membingungkan. Dalam kebanyakan bahasa,
adalah rujukan kepada objek semasa yang instantiates. Dalam JavaScript,

biasanya merujuk kepada objek yang "memiliki" kaedah, tetapi ia bergantung kepada bagaimana fungsi dipanggil. this this this Skop global

Jika tiada objek semasa, merujuk kepada objek global. Dalam pelayar web, ia adalah objek peringkat atas yang mewakili dokumen, lokasi, sejarah, dan beberapa sifat dan kaedah berguna yang lain.

this window Memanggil fungsi

window.WhoAmI = "我是 window 对象";
alert(window.WhoAmI);
alert(this.WhoAmI); // 我是 window 对象
alert(window === this); // true
Salin selepas log masuk

Jika anda memanggil fungsi, simpan objek global:

this Memanggil kaedah objek

window.WhoAmI = "我是 window 对象";

function TestThis() {
    alert(this.WhoAmI); // 我是 window 对象
    alert(window === this); // true
}

TestThis();
Salin selepas log masuk

Apabila memanggil pembina objek atau mana-mana kaedahnya, merujuk kepada contoh objek-seperti mana-mana bahasa berasaskan kelas:

this Gunakan

atau
window.WhoAmI = "我是 window 对象";

function Test() {
    this.WhoAmI = "我是 Test 对象";

    this.Check1 = function() {
        alert(this.WhoAmI); // 我是 Test 对象
    };
}

Test.prototype.Check2 = function() {
    alert(this.WhoAmI); // 我是 Test 对象
};

var t = new Test();
t.Check1();
t.Check2();
Salin selepas log masuk

Pada dasarnya, call dan apply menjalankan fungsi JavaScript seolah -olah mereka adalah kaedah objek lain. Contoh mudah dapat dijelaskan lagi:

Satu -satunya perbezaan ialah call mengharapkan bilangan parameter diskret, manakala apply boleh lulus pelbagai parameter. Ini adalah penerangan ringkas

! Walau bagaimanapun, terdapat beberapa perkara yang perlu disedari yang boleh membawa anda dalam masalah. Kami akan membincangkannya dalam jawatan saya yang seterusnya ...
function SetType(type) {
    this.WhoAmI = "我是 " + type + " 对象";
}

var newObject = {};
SetType.call(newObject, "newObject");
alert(newObject.WhoAmI); // 我是 newObject 对象

var new2 = {};
SetType.apply(new2, ["new2"]);
alert(new2.WhoAmI); // 我是 new2 对象
Salin selepas log masuk

call Soalan Lazim Mengenai apply Dalam JavaScript this

Apakah kata kunci dalam JavaScript? Mengapa penting? this

Kata kunci

dalam JavaScript adalah kata kunci khas yang merujuk kepada konteks fungsi panggilan. Ia adalah rujukan kepada objek yang berfungsi. Nilai this bergantung kepada bagaimana fungsi dipanggil. Ia penting kerana ia membolehkan anda mengakses sifat dan kaedah objek dalam fungsi, menjadikan kod anda lebih fleksibel dan boleh diguna semula. this

Bagaimana kata kunci berfungsi dalam konteks yang berbeza? this Nilai

akan berubah mengikut konteks penggunaannya. Dalam satu kaedah,

merujuk kepada objek pemilik. Apabila digunakan semata -mata, this merujuk kepada objek global. Dalam fungsi, this merujuk kepada objek global. Dalam satu peristiwa, this merujuk kepada elemen yang menerima acara tersebut. this this Bolehkah anda menerangkan bagaimana

berfungsi dalam pengendali acara?

this Dalam pengendali acara,

merujuk kepada elemen HTML yang menerima acara tersebut. Ini membolehkan anda mengakses dan memanipulasi elemen secara langsung dalam fungsi pengendali acara. Sebagai contoh, jika anda mempunyai butang dengan acara

, this dalam fungsi onclick akan merujuk kepada elemen butang. onclick this

Bagaimana ia berkelakuan dalam fungsi anak panah?

this Fungsi anak panah mengendalikan

berbeza daripada fungsi normal. Dalam fungsi anak panah,

adalah leksikal terikat. Ini bermakna ia menggunakan this dalam kod yang mengandungi fungsi anak panah. Oleh itu, untuk fungsi anak panah, this mengekalkan nilai this yang melampirkan konteks leksikal. this this Apakah perbezaan antara

dalam JavaScript dan

dalam bahasa pengaturcaraan lain? this this Dalam banyak bahasa pengaturcaraan berorientasikan objek,

selalu merujuk kepada contoh kelas semasa. Walau bagaimanapun, dalam JavaScript, nilai

ditentukan oleh konteks pelaksanaan dan cara fungsi dipanggil, dan bukannya oleh lokasi definisi fungsi. this this bagaimana mengubah konteks

dalam fungsi?

this anda boleh mengubah konteks

menggunakan kaedah seperti

, call() dan apply(). Kaedah bind() dan this memanggil fungsi menggunakan nilai dan parameter yang diberikan. Perbezaan antara kedua -duanya ialah call() menerima senarai parameter, manakala apply() menerima array parameter tunggal. Kaedah this mengembalikan fungsi baru yang membolehkan anda mengikat fungsi ke objek tertentu. call() Apakah nilai apply() dalam pembina? bind()

dalam pembina,

merujuk kepada objek yang baru dibuat. Apabila anda membuat contoh objek menggunakan kata kunci this,

secara automatik ditetapkan ke objek baru.

this Bagaimana anda berkelakuan dalam mod yang ketat?

Dalam mod yang ketat, nilai this kekal pada set nilai apabila memasuki konteks pelaksanaan. Sekiranya tidak ditentukan, ia tetap tidak ditentukan. Ini berbeza daripada mod bukan tegas, di mana this ingkar ke objek global jika tidak ditentukan.

this Bolehkah ia menjadi batal atau tidak ditentukan?

Ya, this boleh menjadi batal atau tidak ditentukan, terutamanya apabila memanggil fungsi dalam mod yang ketat atau menggunakan call() atau apply() dengan undefined atau null sebagai hujah pertama.

Apakah objek global dalam JavaScript?

Objek Global dalam JavaScript berbeza mengikut persekitaran. Dalam penyemak imbas web, objek global adalah objek window. Dalam node.js, objek global adalah objek global literal. Apabila this digunakan di luar sebarang fungsi atau kaedah, ia merujuk kepada objek global.

Atas ialah kandungan terperinci Apa itu ' ini ' Dalam JavaScript?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan