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