JavaScript'te Nesneler

  • Konbuyu başlatan Konbuyu başlatan Hüseyin
  • Başlangıç tarihi Başlangıç tarihi

Hüseyin

Üye
Top Poster Of Month
Katılım
21 Ocak 2024
Mesajlar
176
Tepkime puanı
40
Puanları
28
Nesneler JavaScript'te merkezi ve güçlü bir kavramdır. Anahtar-değer çiftlerinden oluşan veri yapılarını temsil etmek için kullanılırlar. Nesnedeki her değere karşılık gelen anahtar kullanılarak erişilebilir. JavaScript'te nesneler karmaşık verileri temsil edebilir ve verilerin depolanması, varlıkların modellenmesi ve yöntem biçiminde davranışların tanımlanması gibi çeşitli senaryolarda yaygın olarak kullanılırlar.

Nesne Syntax'ı:

JavaScript'te nesneler küme parantezleri {} kullanılarak tanımlanır. Her bir anahtar-değer çifti iki nokta üst üste ile ayrılır : ve birden fazla çift virgülle ayrılır , . Anahtar her zaman bir dizedir (veya bir semboldür) ve değer sayılar, dizeler, diğer nesneler, diziler, fonksiyonlar vb. dahil olmak üzere herhangi bir veri türünde olabilir.

İşte bir kişiyi temsil eden basit bir nesne örneği:

JavaScript:
const person = {
 name: 'John Doe',
age: 30,
gender: 'male',
isStudent: true,
address: {
city: 'New York',
country: 'USA'
},
sayHello: function() {
console.log('Hello!');
}
};

Bu örnekte, person çeşitli özelliklere (name, age, gender, isStudent, address ve sayHello) sahip bir nesnedir. Address özelliği, city ve country özelliklerine sahip başka bir nesne içerir. sayHello özelliği, nesne içinde tanımlanmış bir yöntemdir (bir işlev).

Nesne Özelliklerine Erişme:

Nesne özelliklerine nokta gösterimini veya köşeli ayraç gösterimini kullanarak erişebilirsiniz. Nokta gösterimi, özellik adını önceden bildiğinizde kullanılır:
Java:
console.log(person.name); // Output: "John Doe"
console.log(person.age); // Output: 30
console.log(person.address.city); // Output: "New York"
person.sayHello(); // Output: "Hello!"

Özellik adı dinamik olduğunda veya özel karakterler içerdiğinde köşeli ayraç gösterimi kullanılır:
JavaScript:
const propName = 'name';
console.log(person[propName]); // Output: "John Doe"
const dynamicProp = 'age';
console.log(person[dynamicProp]); // Output: 30

Nesne Özelliklerini Değiştirme:

Nesne özelliklerini sadece yeni değerler atayarak değiştirebilirsiniz:

JavaScript:
person.age = 31;
person.isStudent = false;
person.address.country = 'Canada';

Özellik Ekleme ve Silme:

Bir nesneye sadece değer atayarak yeni özellikler ekleyebilirsiniz:

JavaScript:
person.email = '[email protected]';

Ayrıca delete anahtar sözcüğünü kullanarak özellikleri silebilirsiniz:

JavaScript:
delete person.isStudent;

Nesne Yöntemleri:

İlk örnekte gösterildiği gibi, nesnelerin nesne içinde tanımlanan işlevler olan yöntemleri de olabilir. Bu yöntemler, nesnenin özelliklerini kullanarak eylemler veya hesaplamalar gerçekleştirebilir:

JavaScript:
const rectangle = {
 width: 10,
height: 5,
calculateArea: function() {
return this.width * this.height;
}
};
console.log(rectangle.calculateArea()); // Output: 50

Nesne Yineleme:

for...in veya Object.keys(), Object.values() veya Object.entries() yöntemleri gibi döngüler kullanarak bir nesnenin özellikleri üzerinde yineleme yapabilirsiniz.

JavaScript:
for (let key in person) {
 console.log(key, person[key]);
}
// Using Object.keys()
const keys = Object.keys(person);
keys.forEach(key => console.log(key, person[key]));

// Using Object.values()
const values = Object.values(person);
values.forEach(value => console.log(value));

// Using Object.entries()
const entries = Object.entries(person);
entries.forEach(([key, value]) => console.log(key, value));

Nesne Oluşturma

Factory Fonksiyonu:


Factory fonksiyonu, new anahtar sözcüğünü kullanmadan bir nesne oluşturmanın ve döndürmenin bir yoludur. Bir nesne döndüren normal bir JavaScript işlevidir.

JavaScript:
function createRectangle(len, bre){
  let rectangle = {
length: 2,
breadth: 10,
draw: function(){
console.log("draw")
}
};
return rectangle;
};
let r1 = createRectangle(2,3);
console.log(r1);

Verilen örnekte, createRectangle, len ve bre (uzunluk ve genişlik) olmak üzere iki bağımsız değişken alan ve bir dikdörtgeni temsil eden yeni bir nesne döndüren bir fabrika işlevidir. Uzunluk ve genişlik özellikleri, bir çizim yöntemiyle birlikte nesnede tanımlanır. Bir dikdörtgen oluşturmak için createRectangle fonksiyonunu çağırırsınız ve bu fonksiyon dikdörtgeni temsil eden yeni oluşturulmuş nesneyi döndürür.

Constructor Fonksiyonu:

Constructor fonksiyonu, new anahtar sözcüğünü kullanarak nesne oluşturmak için kullanılan bir şablondur. Diğer programlama dillerindeki sınıflara benzer.

JavaScript:
function Rectangle( len, bre){
    this.len= len,
this.bre= bre,
this.draw= function(){
console.log("drawing")
}
};
let r2 = new Rectangle(4,6);
console.log(r2);

Verilen örnekte, Rectangle, len ve bre olmak üzere iki argüman alan ve özelliklerini (uzunluk ve genişlik) ve yöntemlerini (çiz) tanımlamak için this anahtar sözcüğünü kullanarak yeni bir nesne oluşturan bir kurucu işlevdir. Kurucu işlevini kullanarak bir dikdörtgen oluşturmak için, let r2=new Rectangle(4,6); örneğinde gösterildiği gibi new anahtar sözcüğünü kullanırsınız.

Nesne Klonlama

Nesne klonlama, bir nesnenin kopyasını oluşturmanın bir yoludur, böylece kopyada yapılan herhangi bir değişiklik orijinal nesneyi etkilemez. JavaScript'te nesneler referans türleridir ve atama operatörünü (=) kullanarak bir nesneyi kopyaladığınızda, bellekte aynı nesneye işaret eden yeni bir referans oluşturur. Bu nedenle, kopyalanan nesnenin değiştirilmesi orijinal nesneyi de etkileyecektir.

JavaScript:
function Rectangle(len, bre){
  this.length = len;
this.breadth= bre;
this.draw= function(){
console.log("Drawing");
}
};

let R1 = new Rectangle(2, 3);
console.log(R1);

let R2 = R1;
R2.length = 1;
console.log(R1);

Nesne klonlamayı göstermek için, verilen örnek uzunluk ve genişlik özelliklerine ve bir draw yöntemine sahip bir Rectangle nesnesi R1 oluşturur. Ardından, R1'i R2'ye atayarak bir R2 kopyası oluşturmaya çalışır. Ancak, bu yalnızca referansın kopyalanması olduğundan, R2.length değerinin değiştirilmesinin R1.length değerini de değiştirdiği örnekte görüldüğü gibi, R2 üzerinde yapılan herhangi bir değişiklik R1'i etkileyecektir.

Düzgün nesne klonlama gerçekleştirmek için örnekte üç yöntem sunulmaktadır:

Iteration (Nesne Klonlama #1): Yeni bir R3 nesnesi oluşturur ve R1'in tüm özelliklerini yineleyerek her bir özelliği ve değerini R3'e atar.

JavaScript:
let R3 ={};
for( let key in R){
R3[key] = R[key];
}

Assign (Nesne Klonlama #2): Yeni bir R4 nesnesi oluşturmak için Object.assign() işlevini kullanır ve R1'in tüm özelliklerini R4'e kopyalar.

JavaScript:
let R4 = Object.assign({},R);

Spread Operatörü (Nesne Klonlama #3): Yeni bir R5 nesnesi oluşturmak için yayma operatörünü ({...}) kullanır ve R1'in tüm özelliklerini R5'e yayar.
JavaScript:
let R5 = {...R};

Bu yöntemler nesneyi düzgün bir şekilde klonlayarak kopyalanan nesnenin orijinalinden bağımsız olmasını sağlar. R3, R4 veya R5'te yapılan herhangi bir değişiklik R1'i etkilemez ve bunun tersi de geçerlidir.

Nesne Prototipleri ve Kalıtım:

JavaScript'te nesneler, prototip tabanlı kalıtım adı verilen bir mekanizma aracılığıyla diğer nesnelerden özellikler ve yöntemler devralabilir. JavaScript'teki her nesne, özelliklerini miras aldığı ilişkili bir prototip nesnesine sahiptir.

Sınıflarla Nesneler Oluşturma (ES6):

ES6'nın kullanıma sunulmasıyla birlikte JavaScript, nesne oluşturmak için sınıf sözdizimini de destekler. Sınıflar, yapıcı fonksiyonlar ve prototipler üzerinde sözdizimsel şekerdir.

JavaScript:
class Person {
 constructor(name, age) {
this.name = name;
this.age = age;
}
sayHello() {
console.log(`Hello, my name is ${this.name} and I'm ${this.age} years old.`);
}
}
const person1 = new Person('Alice', 25);
const person2 = new Person('Bob', 30);
person1.sayHello(); // Output: "Hello, my name is Alice and I'm 25 years old."
person2.sayHello(); // Output: "Hello, my name is Bob and I'm 30 years old."

Classes, constructors ve methods ile nesneler oluşturmak için daha yapılandırılmış ve sezgisel bir yol sağlar.

JSON ve Nesneler:

JavaScript Object Notation (JSON), JavaScript nesnelerine çok benzeyen metin tabanlı bir veri değişim formatıdır. JSON genellikle web uygulamalarında sunucu ve istemci arasında veri göndermek için kullanılır. JSON nesneleri JavaScript nesnelerine benzer, ancak anahtarların çift tırnak içine alınmasıyla ilgili daha katı kuralları vardır.
JavaScript:
{
 "name": "Alice",
"age": 25,
"isStudent": true
}

Object Destructuring:

ES6, bir nesneden özellikleri çıkarmanıza ve bunları değişkenlere atamanıza olanak tanıyan nesne yıkımını getirmiştir:

JavaScript:
const { name, age } = person;
console.log(name); // Output: "John Doe"
console.log(age); // Output: 31

Nesneler JavaScript'te temel bir kavramdır ve verilerin temsil edilmesinde, davranışların tanımlanmasında ve kodun düzenlenmesinde hayati bir rol oynarlar. Nesneleri ve manipülasyonlarını anlamak, JavaScript ile etkili bir şekilde çalışmak ve karmaşık uygulamalar oluşturmak için çok önemlidir.
 
Geri
Üst