Harap diperhatikan bahwa Object.Watch
dan Object.Observe
keduanya sudah tidak digunakan lagi sekarang (mulai Jun 2018).
Saya sedang mencari cara mudah untuk memonitor objek atau variabel untuk perubahan, dan saya menemukan Object.watch()
, itu didukung di browser Mozilla, tetapi tidak di IE. Jadi saya mulai mencari di sekitar untuk melihat apakah ada yang telah menulis semacam padanan.
Tentang satu-satunya hal yang saya temukan adalah plugin jQuery , tetapi saya tidak yakin apakah itu cara terbaik untuk melakukannya. Saya pasti menggunakan jQuery di sebagian besar proyek saya, jadi saya tidak khawatir tentang aspek jQuery ...
Bagaimanapun, pertanyaannya: Bisakah seseorang menunjukkan kepada saya contoh kerja plugin jQuery itu? Saya mengalami masalah dalam membuatnya bekerja ...
Atau, apakah ada yang tahu tentang alternatif yang lebih baik yang akan bekerja lintas browser?
Perbarui setelah jawaban :
Terima kasih semuanya atas tanggapannya! Saya mencoba kode yang diposting di sini: http://webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html
Tapi sepertinya saya tidak bisa membuatnya bekerja dengan IE. Kode di bawah berfungsi dengan baik di Firefox, tetapi tidak melakukan apa pun di IE. Di Firefox, setiap kali watcher.status
diubah, document.write()
in watcher.watch()
dipanggil dan Anda dapat melihat hasilnya di halaman. Di IE, itu tidak terjadi, tetapi saya dapat melihat itu watcher.status
memperbarui nilai, karena document.write()
panggilan terakhir menunjukkan nilai yang benar (di IE dan FF). Tapi, jika fungsi callback tidak dipanggil, maka itu tidak ada gunanya ... :)
Apakah saya melewatkan sesuatu?
var options = {'status': 'no status'},
watcher = createWatcher(options);
watcher.watch("status", function(prop, oldValue, newValue) {
document.write("old: " + oldValue + ", new: " + newValue + "<br>");
return newValue;
});
watcher.status = 'asdf';
watcher.status = '1234';
document.write(watcher.status + "<br>");
sumber
Jawaban:
(Maaf untuk posting silang, tapi jawaban yang saya berikan untuk pertanyaan serupa ini berfungsi dengan baik di sini)
Saya telah membuat objek kecil. Perhatikan shim untuk ini beberapa waktu yang lalu. Ini berfungsi di IE8, Safari, Chrome, Firefox, Opera, dll.
sumber
Object.defineProperty()
ada. Saya akhirnya melihat referensi MDN untuk melihat cara kerjanya.Plugin itu hanya menggunakan timer / interval untuk berulang kali memeriksa perubahan pada suatu objek. Mungkin cukup baik tetapi secara pribadi saya ingin lebih cepat sebagai pengamat.
Berikut ini upaya untuk membawa
watch
/unwatch
ke IE: http://webreflection.blogspot.com/2009/01/internet-explorer-object-watch.html .Itu mengubah sintaks dari cara Firefox menambahkan pengamat. Dari pada :
Anda melakukan:
Tidak semanis itu, tetapi sebagai pengamat Anda akan segera diberi tahu.
sumber
Jawaban atas pertanyaan ini agak ketinggalan jaman. Object.watch dan Object.observe keduanya tidak digunakan lagi dan sebaiknya tidak digunakan.
Hari ini, Anda sekarang dapat menggunakan objek Proxy untuk memantau (dan mencegat) perubahan yang dibuat pada suatu objek. Inilah contoh dasarnya:
Jika Anda perlu mengamati perubahan yang dibuat pada objek bersarang, Anda perlu menggunakan pustaka khusus. Saya menerbitkan Observable Slim dan berfungsi seperti ini:
sumber
Jawaban Saat Ini
Gunakan objek Proxy baru , yang dapat melihat perubahan pada targetnya.
Jawaban lama dari 2015
Anda bisa menggunakan Object.observe () dari ES7 . Ini polyfill. Tapi Object.observe () sekarang dibatalkan . Maaf orang!
sumber
Perhatikan bahwa di Chrome 36 dan yang lebih tinggi, Anda juga dapat menggunakannya
Object.observe
. Ini sebenarnya adalah bagian dari standar ECMAScript masa depan, dan bukan fitur khusus browser seperti milik MozillaObject.watch
.Object.observe
hanya bekerja pada properti objek, tetapi performanya jauh lebih baik daripadaObject.watch
(yang dimaksudkan untuk tujuan debugging, bukan penggunaan produksi).sumber
Anda dapat menggunakan Object.defineProperty .
awasi properti
bar
difoo
sumber
Saya telah menggunakan Watch.js di salah satu proyek saya. Dan itu berfungsi dengan baik. Salah satu keuntungan utama menggunakan perpustakaan ini adalah:
Contoh diberikan di bawah ini
Ini sesederhana ini!
sumber
Saya juga berpikir bahwa saat ini solusi terbaik adalah dengan menggunakan Watch.JS, temukan tutorial yang bagus di sini: Dengarkan / Perhatikan perubahan objek atau array di Javascript (Peristiwa perubahan properti pada objek Javascript)
sumber