Rumah >hujung hadapan web >tutorial js >`this` lwn. `obj` dalam Object Literal Functions: Bilakah Saya Perlu Menggunakan Yang Mana?

`this` lwn. `obj` dalam Object Literal Functions: Bilakah Saya Perlu Menggunakan Yang Mana?

Patricia Arquette
Patricia Arquetteasal
2024-11-28 19:42:121002semak imbas

`this` vs. `obj` in Object Literal Functions: When Should I Use Which?

Rujukan Literal Objek dalam Fungsi Sendiri: Meneroka 'ini' lwn. 'obj'

Apabila mentakrifkan fungsi dalam literal objek, anda mungkin menghadapi persoalan sama ada untuk merujuk objek sebagai 'ini' atau terus menggunakan 'obj'. Walaupun kedua-dua pendekatan mungkin kelihatan menghasilkan hasil yang sama, terdapat potensi implikasi untuk dipertimbangkan.

Merujuk 'ini' dalam Fungsi

Menggunakan 'ini' dalam fungsi menganggap bahawa fungsi akan sentiasa dipanggil sebagai kaedah objek. Pendekatan ini boleh membawa kepada isu apabila memanggil fungsi di luar konteks objek. Contohnya:

var obj = {
  key1: "it",
  key2: function() { return this.key1 + " works!"; }
};

var func = obj.key2;  // Assign function to a new reference
alert(func());        // Error: Reference lost outside of object context

Merujuk 'obj' dalam Fungsi

Merujuk terus 'obj' dalam fungsi menyelesaikan isu yang dihadapi dalam contoh sebelumnya. Walau bagaimanapun, ia memperkenalkan kebimbangan yang berbeza:

var obj = {
  key1: "it",
  key2: function() { return obj.key1 + " works!"; }
};

var newref = obj;
obj = { key1: "something else"; };

alert(newref.key2()); // Outputs "something else works"

Dalam kes ini, jika objek yang dirujuk oleh 'obj' diubah suai, fungsi akan terus menggunakan sifat objek yang dikemas kini. Ini boleh membawa kepada tingkah laku yang tidak dijangka, terutamanya jika rujukan objek ditukar semasa hayat fungsi.

Memilih Pendekatan Terbaik

Pilihan antara merujuk 'ini' dan 'obj' bergantung pada konteks khusus dan potensi risiko yang berkaitan dengan setiap pendekatan. Jika fungsi itu hanya bertujuan untuk digunakan dalam konteks objek, menggunakan 'ini' mungkin lebih baik. Walau bagaimanapun, jika fungsi itu boleh digunakan di luar konteks objek atau terdapat risiko mengubah suai rujukan objek, merujuk terus 'obj' menyediakan pendekatan yang lebih selamat.

Memastikan Integriti Objek

Untuk senario yang memelihara integriti objek adalah penting, pertimbangkan perkara berikut pilihan:

  • ES6 Const: Menggunakan kata kunci const dengan let dalam objek memastikan rujukan objek tidak boleh ditugaskan semula.
  • Penutupan: Menggunakan penutupan untuk skop rujukan objek dalam fungsi menyediakan yang selamat dan terpencil persekitaran.
  • Mengikat: Mengikat fungsi pada objek menggunakan .bind() memastikan fungsi itu sentiasa beroperasi dalam konteks yang betul.

Atas ialah kandungan terperinci `this` lwn. `obj` dalam Object Literal Functions: Bilakah Saya Perlu Menggunakan Yang Mana?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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