mannaxxx 1
mannaxxx
Agora Metin2 1
Agora Metin2
Mt2Hizmet 1
Mt2Hizmet
berkmenoo 1
berkmenoo
kralhakan2009 1
kralhakan2009
Vahsi Uzman 1
Vahsi Uzman
farkmt2official 1
farkmt2official
Hikaye Ekle

[NODE JS] Object Kullanımı ve Object Metodları

Ayyıldız2 | 2008 TR Yapısı • 1-99 Orta Emek Destan • Oto Avsız • 10 Temmuz 21:00 HEMEN TIKLA!

nodejs.png


[NODE JS] Object Kullanımı ve Object Metodları​


Merhaba arkadaşlar. JavaScript'te her şey neredeyse obje tabanlı çalışır ve Node.js'te de objeleri etkin kullanmak çok önemli. Bugün obje oluşturma yöntemlerinden Object sınıfının sunduğu statik metodlara kadar her şeyi ele alacağız. Ben özellikle Object.keys, Object.values ve Object.entries üçlüsünü her gün kullanıyorum, bunlar olmadan bir gün bile kodlama yapamam.

Obje Oluşturma ve Temel İşlemler​


Obje oluşturmanın birden fazla yolu var: literal syntax, constructor, Object.create ve class. Günlük kullanımda literal syntax yani süslü parantez ile oluşturma en yaygını. Constructor ve Object.create daha özel senaryolarda kullanılır.

Objelerde property erişimi iki yolla yapılır: nokta notasyonu (obj.key) ve köşeli parantez notasyonu (obj["key"]). Köşeli parantez dinamik key erişimi için kullanılır, değişken adı ile property'ye erişmek istediğinizde bu yöntemi kullanırsınız.

JavaScript:
// === OBJE OLUŞTURMA VE TEMEL İŞLEMLER ===

// 1. Literal syntax
const kullanici = {
    isim: 'Ahmet',
    yas: 28,
    'özel-key': 'tire içeren key', // özel karakterli key
    selamla() { // Method shorthand
        return `Merhaba, ben ${this.isim}`;
    }
};

// 2. Computed property names (dinamik key)
const alan = 'email';
const deger = 'ahmet@test.com';
const dinamik = {
    [alan]: deger,
    [`${alan}_dogrulanma`]: true,
    [`get_${alan}`]() {
        return this[alan];
    }
};
console.log(dinamik); // { email: 'ahmet@test.com', email_dogrulanma: true, ... }

// 3. Property shorthand
const isim = 'Ayşe';
const yas = 25;
const sehir = 'İstanbul';
// Eski yöntem
const eskiObje = { isim: isim, yas: yas, sehir: sehir };
// Shorthand
const yeniObje = { isim, yas, sehir };
console.log(yeniObje);

// 4. Property erişim ve kontrol
console.log(kullanici.isim);           // Ahmet
console.log(kullanici['özel-key']);     // tire içeren key
console.log(kullanici.olmayan);        // undefined

// Property varlığı kontrolü
console.log('isim' in kullanici);                    // true
console.log(kullanici.hasOwnProperty('yas'));         // true
console.log(kullanici.hasOwnProperty('toString'));    // false (prototype'ta)

// Optional chaining (ES2020) - harika bir özellik
const veri = {
    kullanici: {
        profil: {
            avatar: 'resim.jpg'
        }
    }
};

// Eski yöntem (verbose)
const avatarEski = veri && veri.kullanici && veri.kullanici.profil && veri.kullanici.profil.avatar;
// Modern yöntem
const avatarYeni = veri?.kullanici?.profil?.avatar;
const olmayan = veri?.kullanici?.ayarlar?.tema ?? 'varsayılan';
console.log(avatarYeni);  // 'resim.jpg'
console.log(olmayan);     // 'varsayılan'

// Property silme
const temp = { a: 1, b: 2, c: 3 };
delete temp.b;
console.log(temp); // { a: 1, c: 3 }

Object Statik Metodları​


Object sınıfının statik metodları obje manipülasyonunda en çok kullanılan araçlar. Bunları bilmeden modern JavaScript yazmak mümkün değil. Ben özellikle Object.entries ile for...of döngüsünü birlikte kullanmayı çok seviyorum, obje üzerinde dolaşmanın en temiz yolu bu.

Tecrübeme göre Object.freeze ve Object.seal de bilinmesi gereken metodlar. Konfigürasyon objeleri ve sabit değerleri korumak için kullanılır. Production'da yanlışlıkla bir sabitin değiştirilmesini engellemek için freeze kullanıyorum.

JavaScript:
// === OBJECT STATİK METODLARI ===

const urun = {
    isim: 'Laptop',
    marka: 'Dell',
    fiyat: 25000,
    stok: 42,
    aktif: true
};

// Object.keys() - key listesi
const keyler = Object.keys(urun);
console.log('Keys:', keyler); // ['isim', 'marka', 'fiyat', 'stok', 'aktif']

// Object.values() - değer listesi
const degerler = Object.values(urun);
console.log('Values:', degerler); // ['Laptop', 'Dell', 25000, 42, true]

// Object.entries() - [key, value] çiftleri
const girisler = Object.entries(urun);
console.log('Entries:', girisler);

// Object.entries ile döngü
for (const [key, value] of Object.entries(urun)) {
    console.log(`  ${key}: ${value} (${typeof value})`);
}

// Object.fromEntries() - entries'ten obje oluşturma
const fiyatlar = new Map([
    ['elma', 15],
    ['armut', 20],
    ['muz', 35]
]);
const fiyatObje = Object.fromEntries(fiyatlar);
console.log('FromEntries:', fiyatObje);

// Object.assign() - obje birleştirme
const varsayilan = { tema: 'açık', dil: 'tr', bildirim: true };
const kullaniciAyar = { tema: 'koyu', fontSize: 16 };
const sonAyar = Object.assign({}, varsayilan, kullaniciAyar);
console.log('Assign:', sonAyar);

// Object.freeze() - objeyi dondurma (değiştirilemez)
const SABITLER = Object.freeze({
    MAX_DENEME: 3,
    API_URL: 'https://api.example.com',
    TIMEOUT: 5000
});
// SABITLER.MAX_DENEME = 10; // Sessizce başarısız (strict mode'da TypeError)
console.log('Frozen:', SABITLER.MAX_DENEME); // 3

// Object.seal() - yeni property eklenemez ama mevcut değiştirilebilir
const ayarlar = Object.seal({ port: 3000, host: 'localhost' });
ayarlar.port = 8080;       // Çalışır
// ayarlar.yeni = 'test';  // Başarısız
console.log('Sealed:', ayarlar);

// Object.is() - kesin eşitlik kontrolü
console.log(Object.is(NaN, NaN));   // true (=== false dönerdi!)
console.log(Object.is(0, -0));      // false (=== true dönerdi!)

// Object.getOwnPropertyNames vs Object.keys
const obj = {};
Object.defineProperty(obj, 'gizli', {
    value: 'gizli değer',
    enumerable: false
});
obj.gorunur = 'görünür değer';

console.log(Object.keys(obj));                  // ['gorunur']
console.log(Object.getOwnPropertyNames(obj));   // ['gizli', 'gorunur']

// Gerçek dünya: obje dönüşümü
const dbKullanicilar = [
    { id: 1, isim: 'Ali', departman: 'IT' },
    { id: 2, isim: 'Veli', departman: 'HR' },
    { id: 3, isim: 'Ayşe', departman: 'IT' }
];

// ID'ye göre indeksleme (lookup tablosu)
const kullaniciMap = Object.fromEntries(
    dbKullanicilar.map(k => [k.id, k])
);
console.log('ID=2:', kullaniciMap[2]); // Hızlı erişim

Obje metodlarını iyi bilmek JavaScript'te veri manipülasyonu yapmanın temelidir. Özellikle Object.keys, Object.values, Object.entries üçlüsünü ezbere bilmenizi öneririm. Bu üçlüyü array metodlarıyla birlikte kullanarak çok güçlü veri dönüşümleri yapabilirsiniz. Kolay gelsin.
 

Şu an konuyu görüntüleyenler (Toplam : 0, Üye: 0, Misafir: 0)

Geri
Üst