NodeList ve HTMLCollection Karşılaştırması
Öğe koleksiyonları arasındaki farkları anlayın.
NodeList ve HTMLCollection Karşılaştırması, CoddyKit'te ücretsiz bir JavaScript Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, JavaScript Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. JavaScript Academy kursu toplamda 4 dersten oluşur.
İki koleksiyon türü
DOM yöntemleri, liste benzeri iki nesne türünden birini döndürür: bir NodeList veya bir HTMLCollection. Benzer görünürler, ancak önemli yönlerden farklıdırlar.
NodeList nereden gelir
querySelectorAll ve childNodes, NodeList nesneleri döndürür. querySelectorAll'dan gelen liste statiktir: sorgu anında alınan bir anlık görüntüdür.
const items = document.querySelectorAll(".item"); // static NodeListHTML öğe koleksiyonu nereden gelir
getElementsByClassName, getElementsByTagName ve children özelliği, canlı HTMLCollection nesneleri döndürür.
const items = document.getElementsByClassName("item"); // live HTMLCollectionStatik ve canlı
Statik bir NodeList, DOM değişse bile ilk içeriğini korur. Canlı bir HTML öğe koleksiyonu ise eklemeleri ve kaldırmaları otomatik olarak yansıtır.
const liveList = document.getElementsByClassName("item");
const staticList = document.querySelectorAll(".item");
// add a new .item later:
// liveList.length increases, staticList.length does notforEach desteği
NodeList yerleşik bir forEach yöntemine sahiptir. HTMLCollection ise sahip değildir; bu nedenle onu dönüştürmeniz veya dizin kullanan bir döngü yazmanız gerekir.
document.querySelectorAll(".item").forEach((el) => {
console.log(el.textContent);
});İkisi de gerçek dizi değildir
Her ikisi de dizi benzeridir: length ve dizin erişimine sahiptir, ancak map, filter ve reduce yöntemlerinden yoksundur.
const list = document.querySelectorAll(".item");
// list.map is undefinedArray.from ile dönüştürme
Array.from, her iki koleksiyonu da gerçek bir diziye dönüştürerek tüm dizi yöntemlerini kullanılabilir hâle getirir.
const arr = Array.from(document.querySelectorAll(".item"));
const texts = arr.map((el) => el.textContent);Yayma işleciyle dönüştürme
Yayma işleci, gerçek bir dizi de oluşturan kısa bir alternatiftir.
const arr = [...document.getElementsByClassName("item")];
const visible = arr.filter((el) => !el.hidden);Canlı listeyle döngü tuzağı
Canlı bir HTML öğe koleksiyonu üzerinde yineleme yaparken öğeleri kaldırmak, dizinleri kaydırır ve bazı öğelerin atlanmasına neden olur. Güvenli şekilde yinelemek için önce koleksiyonu bir diziye dönüştürün.
const items = [...document.getElementsByClassName("done")];
items.forEach((el) => el.remove()); // safeHer ikisini dizinleme
Her ikisi de sayısal dizinlemeyi ve length özelliğini destekler. Bu nedenle, temel erişim biçimleri altta yatan davranışları farklı olsa da aynıdır.
const a = document.querySelectorAll(".item");
const b = document.getElementsByClassName("item");
console.log(a[0], b[0], a.length, b.length);Doğru olanı seçme
Sabit bir anlık görüntü ve yerleşik forEach istediğinizde querySelectorAll kullanın. Listenin DOM ile eşzamanlı kalmasına özellikle ihtiyaç duyduğunuzda canlı koleksiyonları kullanın.
Hızlı kontrol
Farkı bulun.
Özet
NodeList'in (querySelectorAll'dan gelen) statik olduğunu ve forEach içerdiğini; HTML öğe koleksiyonunun (getElementsByClassName, getElementsByTagName ve children tarafından döndürülen) canlı olduğunu ve forEach içermediğini öğrendiniz. İkisi de gerçek dizi değildir; map/filter/azaltma işlemlerini kullanmadan ve değişiklik yaparken güvenli şekilde yinelemeden önce dönüştürmek için Array.from veya yayma işleci kullanın.
Yapay zeka eğitmeniyle JavaScript öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 59
- Dersler
- 200
Sıkça Sorulan Sorular
“NodeList ve HTMLCollection Karşılaştırması” dersi ücretsiz mi?
Evet — “NodeList ve HTMLCollection Karşılaştırması” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve JavaScript Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. JavaScript Academy kursu toplamda 4 dersten oluşur.
“NodeList ve HTMLCollection Karşılaştırması” dersinde ne öğreneceğim?
Öğe koleksiyonları arasındaki farkları anlayın. JavaScript Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
JavaScript Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te JavaScript Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“NodeList ve HTMLCollection Karşılaştırması” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu JavaScript Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her JavaScript Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- querySelector ile Öğe Seçme
- getElementById ve getElementsByClassName
- Üst, Alt ve Kardeş Öğeler Arasında Gezinme
- NodeList ve HTMLCollection Karşılaştırması