JavaScript Nesneler (Objects)
JavaScript’te object (nesne), birden fazla veriyi ve davranışı birlikte tutan yapıdır. Nesneler özellikler (properties) ve metodlar (methods) içerir. Tarayıcı tarafında ise ayrıca Browser/DOM nesneleri (window, document, location, history, …) bulunur.
nesne.ozellik |
Metod çağrısı: nesne.metod(arg)
1) JavaScript Object Nedir?
const kullanici = {
id: 45,
ad: "Mehmet",
aktif: true,
selamla() {
return `Merhaba ${this.ad}`;
}
};
console.log(kullanici.ad); // property
console.log(kullanici.selamla()); // method
kullanici.ad bir değer döndürür. kullanici.selamla() ise bir fonksiyonu çalıştırır.
2) Dot (.) ve Köşeli Parantez ([ ]) Erişimi
const kisi = { ad: "Ayşe", "soy-ad": "Yılmaz" };
console.log(kisi.ad); // ✅
console.log(kisi["soy-ad"]); // ✅ (özel karakter varsa şart)
[] gerekir:
kisi[degiskenAnahtar]
3) DOM ve Browser Nesneleri
Tarayıcı tarafında JavaScript, Window nesnesi altında çalışan bir ortamda çalışır.
En çok kullanılanlar:
window, document, location, history, navigator.
console.log(window.innerWidth); // pencere genişliği
console.log(document.title); // sayfa başlığı
console.log(location.href); // tam URL
console.log(history.length); // geçmiş uzunluğu
console.log(navigator.userAgent); // tarayıcı bilgisi
4) Modern Örnek: Butona Basınca Yeni Pencere Açmak
window.open genelde bir buton tıklaması içinde çalıştırılmalıdır.
Aşağıdaki örnekte inline onClick yerine modern yaklaşım olan addEventListener kullanılır.
<button id="btnOpen">Pencere Aç</button>
<button id="btnClose">Pencere Kapat</button>
let popup = null;
document.getElementById("btnOpen").addEventListener("click", () => {
// Güvenlik: noopener/noreferrer (bazı tarayıcılarda özellik stringi ile sınırlı)
popup = window.open("", "YeniPencere", "width=420,height=260");
if (!popup) {
alert("Popup engellendi. Tarayıcı ayarlarından izin verin.");
return;
}
popup.document.write("<h3>Yeni pencere açtınız. Tebrikler!</h3>");
});
document.getElementById("btnClose").addEventListener("click", () => {
if (popup && !popup.closed) popup.close();
});
popup değişkeni açılan pencerenin “referansı”dır.
Bu referansla pencereye yazı yazabilir, kapatabilir veya kapalı mı kontrol edebilirsiniz:
popup.closed
5) Document Nesnesi: document.write Yerine Ne Kullanmalı?
document.write modern projelerde önerilmez.
Sayfayı yeniden oluşturabilir ve DOM’u bozabilir.
Bunun yerine DOM’a eleman ekleme yöntemleri kullanılır.
<div id="sonuc"></div>
const sonuc = document.getElementById("sonuc");
sonuc.textContent = "Merhaba! (textContent güvenlidir)";
6) Location Nesnesi
location sayfanın adres bilgilerini verir ve yönlendirme yapılmasını sağlar.
console.log(location.protocol); // "http:" veya "https:"
console.log(location.host); // "site.com:443"
console.log(location.pathname); // "/sayfa.html"
console.log(location.search); // "?id=45"
// Yönlendirme:
// location.href = "/menu.php";
URLSearchParams çok pratiktir:
const params = new URLSearchParams(location.search);
console.log(params.get("id")); // örn: 45
7) History Nesnesi
function geriGit() {
history.back(); // history.go(-1) ile aynı
}
function ileriGit() {
history.forward(); // history.go(1) ile aynı
}
history.pushState() ve popstate olayı ile
sayfa yenilemeden URL değiştirme yapılabilir.
8) Modern JS Püf Noktaları (Çok İşe Yarar)
// Optional chaining (undefined hatalarını azaltır)
const ad = kullanici?.profil?.ad ?? "Bilinmiyor";
// Destructuring
const { id, aktif } = kullanici;
// Object kopyalama (shallow)
const kopya = { ...kullanici, aktif: false };
Eski Tabloyu Güncelleyelim (DOM Karşılıkları)
Aşağıdaki tablo, klasik “HTML elemanı ↔ JS nesnesi” yaklaşımının modern karşılığıdır. (Frame/Applet gibi etiketler artık kullanılmıyor.)
| JavaScript / DOM | HTML Karşılığı | Modern Not |
|---|---|---|
| window | (Yok) | Tarayıcı penceresi / global ortam |
| document | <html> / <body> | DOM ağacı buradan yönetilir |
| HTMLFormElement | <form> | Form elemanları: form.elements |
| HTMLInputElement | <input> | type=text/password/file/... hepsi input |
| HTMLSelectElement | <select> | select.value ile okunur |
| HTMLTextAreaElement | <textarea> | Uzun metin girdisi |
| HTMLAnchorElement | <a> | Link: a.href |
| HTMLImageElement | <img> | Resim: img.src |
Özet
- Nesne = property + method yapısı
- DOM/Browser nesneleri: window, document, location, history…
document.writeyerine DOM güncelleme tercih edilirwindow.openkullanıcı etkileşimi ile çalıştırılmalıdır- Modern ipuçları: optional chaining, destructuring, spread