Pemerhati JavaScript adalah penting untuk mencipta aplikasi dinamik dengan membolehkan pembangun bertindak balas terhadap perubahan dalam objek, peristiwa atau aliran data. Panduan ini meneroka pelbagai jenis pemerhati JavaScript dengan penjelasan terperinci dan contoh praktikal.
Pendengar acara ialah pemerhati JavaScript asas, bertindak balas terhadap peristiwa seperti interaksi pengguna (klik, penekanan kekunci, pergerakan tetikus).
<code class="language-javascript">// Select a button const button = document.querySelector('button'); // Add a click listener button.addEventListener('click', (event) => { console.log('Button clicked!', event); }); // Add a mouseover listener button.addEventListener('mouseover', () => { console.log('Mouse over button!'); });</code>
Pemerhati mutasi menjejaki pengubahsuaian DOM (ditambah, dialih keluar atau diubah nod), penting untuk kandungan yang dikemas kini secara dinamik.
<code class="language-javascript">// Target node const targetNode = document.querySelector('#target'); // Create a MutationObserver const observer = new MutationObserver((mutationsList) => { mutationsList.forEach((mutation) => { console.log('DOM change detected:', mutation); }); }); // Configuration const config = { childList: true, attributes: true, subtree: true }; // Start observing observer.observe(targetNode, config); // Simulate a change setTimeout(() => { const newElement = document.createElement('p'); newElement.textContent = 'New text!'; targetNode.appendChild(newElement); }, 2000);</code>
Pemerhati persimpangan mengesan apabila elemen masuk atau keluar dari port pandangan, sesuai untuk memuatkan malas atau animasi.
<code class="language-javascript">// Element to observe const targetElement = document.querySelector('#box'); // Create an IntersectionObserver const observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { console.log('Element in viewport:', entry.target); } else { console.log('Element out of viewport:', entry.target); } }); }); // Start observing observer.observe(targetElement);</code>
Ubah saiz pemerhati memantau perubahan saiz elemen, penting untuk UI responsif.
<code class="language-javascript">// Element to observe const box = document.querySelector('#resizable'); // Create a ResizeObserver const observer = new ResizeObserver((entries) => { entries.forEach((entry) => { const { width, height } = entry.contentRect; console.log(`New size: ${width}px x ${height}px`); }); }); // Start observing observer.observe(box); // Simulate a resize setTimeout(() => { box.style.width = '400px'; box.style.height = '200px'; }, 2000);</code>
API Proksi membenarkan pemerhatian perubahan sifat objek, membolehkan tindak balas dinamik kepada kemas kini.
<code class="language-javascript">// Object to observe const obj = { name: 'John', age: 30 }; // Use Proxy const observedObj = new Proxy(obj, { set(target, property, value) { console.log(`Property '${property}' changed from '${target[property]}' to '${value}'`); target[property] = value; return true; }, }); // Trigger changes observedObj.name = 'Jane'; observedObj.age = 31;</code>
RxJS menyediakan pelaksanaan corak pemerhati lanjutan untuk pengurusan aliran data yang cekap.
<code class="language-javascript">// Select a button const button = document.querySelector('button'); // Add a click listener button.addEventListener('click', (event) => { console.log('Button clicked!', event); }); // Add a mouseover listener button.addEventListener('mouseover', () => { console.log('Mouse over button!'); });</code>
Pemerhati prestasi menjejaki peristiwa prestasi (pemuatan sumber, tugas yang panjang) untuk pengoptimuman aplikasi.
<code class="language-javascript">// Target node const targetNode = document.querySelector('#target'); // Create a MutationObserver const observer = new MutationObserver((mutationsList) => { mutationsList.forEach((mutation) => { console.log('DOM change detected:', mutation); }); }); // Configuration const config = { childList: true, attributes: true, subtree: true }; // Start observing observer.observe(targetNode, config); // Simulate a change setTimeout(() => { const newElement = document.createElement('p'); newElement.textContent = 'New text!'; targetNode.appendChild(newElement); }, 2000);</code>
Buat pemerhati tersuai menggunakan corak reka bentuk pemerhati untuk senario di luar API terbina dalam.
<code class="language-javascript">// Element to observe const targetElement = document.querySelector('#box'); // Create an IntersectionObserver const observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { if (entry.isIntersecting) { console.log('Element in viewport:', entry.target); } else { console.log('Element out of viewport:', entry.target); } }); }); // Start observing observer.observe(targetElement);</code>
Pemerhati JavaScript ialah alat yang berkuasa untuk membina aplikasi dinamik dan responsif. Menguasai pelbagai jenis ini akan meningkatkan keupayaan pembangunan JavaScript anda dengan ketara. Eksperimen dengan contoh ini untuk memperdalam pemahaman anda dan menyepadukannya ke dalam projek anda.
Atas ialah kandungan terperinci Memahami Pemerhati dalam JavaScript: Panduan Komprehensif. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!