Rekan saya telah menggunakan "fungsi baru ()" dengan huruf kecil "f" untuk mendefinisikan objek baru di JavaScript. Tampaknya berfungsi dengan baik di semua browser utama dan juga tampaknya cukup efektif dalam menyembunyikan variabel pribadi. Berikut contohnya:
var someObj = new function () {
var inner = 'some value';
this.foo = 'blah';
this.get_inner = function () {
return inner;
};
this.set_inner = function (s) {
inner = s;
};
};
Begitu "ini" digunakan, ini menjadi milik umum someObj. Jadi someObj.foo, someObj.get_inner () dan someObj.set_inner () semuanya tersedia untuk umum. Selain itu, set_inner () dan get_inner () adalah metode istimewa, sehingga mereka memiliki akses ke "dalam" melalui penutupan.
Namun, saya belum melihat referensi apa pun untuk teknik ini di mana pun. Bahkan JSLint milik Douglas Crockford mengeluhkannya:
- konstruksi aneh. Hapus 'baru'
Kami menggunakan teknik ini dalam produksi dan tampaknya berhasil dengan baik, tetapi saya agak khawatir karena tidak didokumentasikan di mana pun. Adakah yang tahu jika ini adalah teknik yang valid?
this
akan merujuk ke elemen yang memicu peristiwa tersebut, bukan objek Anda, tetapi Anda bisa saja melakukannyavar instance = this
.