Javascript 8 | Object 1
string , number , boolean , null ve undefined harici herşey object’tir. Ancak string , number ve boolean keyword’lerini de new keywordü ile kullanılırsak onlarda object olur.
Object Yaratmak
Object Literal kullanarak object yaratabiliriz.
var person = {firstName:”John”, lastName:”Doe”, age:50, eyeColor:”blue”};
Yukarıdaki örneğimizi new operatorü ile de yaratabiliriz.
var person = new Object();
person.firstName = “John”;
Constructor
Bir objeyi new ‘ledigimiz zaman aşağıdaki durum gerçekleşir.
1. Yeni bir obje yaratılır ve this bu obje olur.
2. Fonksiyon gövdesi çalışır. Genelde this modifiye edilir ve yeni özellikler eklenir.
3. this değeri return edilir.
Şimdi object literal’den bir örnek verip daha sonra constructor’ın önemini gösterelim.
const emp1= {
name:”Mustafa”,
age:25
}
console.log(emp1)
Bu kod JS’de object literal olarak geçiyor. Ancak proje içerisinde name ve age’e sahip farkli emp’ler oluşturmak isteyebiliriz. Bu durumda bu emp1'i çoklamamız gerekir. Böyle bir işlem yapmamak için bu name ve age’i parametre olarak alan nesneler yazabilmeliyiz. Bu kod bloğu yerine constructor yazabiliriz.
function Employee(name) {
this.name = name;
}
const emp1 = new Employee(“Omer”);
Yukarıdaki kod bloğu sayesinde 100'lerce nesne yaratabiliriz. Object literalde olduğu gibi kod çoklamamıza gerek yoktur.
Şimdi ise Js’in objeleri nasıl tuttuğunu, nasıl davranış sergilediğini inceleyeceğiz. Obje değişkeni objenin kendisini değil hafızadaki adresini tutar.Yani reference’ini tutar. Obje değişkeni kopyalandığında yada başka bir değişkene atandığında hafızadaki obje kopyalanmaz, objenin reference’i kopyalanır.
Örn :
NOT 1: Ayrıca objenin direk kendisiyle eşitlik kontrolü yapmakta hatalıdır.
let a = {};
let b = {}; // iki tane bagimsiz objealert( a == b ); // false
NOT 2 : Obje içerisindeki property silmek için ; delete obj.property kullanırız. Bir objenin içerisindeki property’nin varlığını kontrol etmek için “key” in obj kullanırız.
NOT 3 : JS’de Array ve date diye bir tip yoktur. Bunların hepsi objeden türemiştir..
NOT 4 : const {name, surname} = person;
yaptığımda name = person.name ve surname = person.surname yapmış oluyorum bunu biliyoruz. Bu işlemin ismi destructing.
Eğer olur da bunları almak istiyoruz ancak farklı bir isim vermek istiyorsak ;
const {name:personName, surname: personSurname} = person;
Daha sonra bu değişkenleri direk personName yada personSurname olarak kullanabiliriz.
NOT 5 : Bir object’e rahatlıkla property ekleyebiliriz. Aynı şekilde bir method’da eklemek kolaydır.
ÖRN :
Ancak bir constructor’a sonradan bir property ekleyemeyiz. Aynı şekilde method da ekleyemeyiz.
Object constructor’larına yeni property ve method eklemek için prototype özelliğini kullanabiliriz.
Person.prototype.nationality = “English”;
Çıktı : My father is English
Prototype’lar hakkında detaylı bilgiyi sonraki makalelerimde anlatacağım.
Makalelerimin tamamına erişmek isteyen arkadaşlar için hepsinin linkinin bulunduğu bir tutorial hazırladım. Aşağıdaki linkte paylaşıyorum.
https://medium.com/@omercelikceng/javascript-makalelerimin-tamam%C4%B1-45a71ac3b386