Javascript Constructor ve This Kullanımı

nhtctn nhtctn

Javascript’te nesne oluşturmak için kullanabileceğimiz eski yapılardan olan object literal ile nesne oluşturmak mümkündür.

Yapısı aşağıda olduğu gibidir.

let car = {
     name: "Tofaş",
     date: 2000,
     color: "black"
 }

Birden çok araba bilgisini saklamak istersek her seferinde obje oluşturmak yerine bir kalıp oluşturarak daha az kod ve daha mantıklı bir yaklaşım ile bunu yapmak mümkündür. Bunu constructor ile yapacağız.

Constructor (Yapıcı Method)

İki türlü constructor tanımlaması yapabiliriz.

//Person Constructor
function Person(name, yearOfBirth, job) {
     this.name = name;
     this.yearOfBirth = yearOfBirth;
     this.job = job;
     this.calculateAge = function () {
         return 2020 - this.yearOfBirth;
     }
}

Yukarıda constructor’ımızı oluşturduk.

Burada new Person diyerek constructor’ımızın bir instance(örneğini) oluşturmuş olduk. Yani person constructor’ın bir kopyası şeklinde düşünebilirsiniz.

Ardından parametre ile değerleri gönderdik.

let yigit = new Person("Yiğit", 2009, "student");
let sena = new Person("Sena", 1989, "teacher");

Aşağıdaki şekilde nesneye erişmek mümkündür.

console.log(yigit);
console.log(yigit.name);
console.log(yigit.yearOfBirth);
console.log(yigit.job);
console.log(yigit.calculateAge());

console.log("********");
console.log(sena);
console.log(sena.name);
console.log(sena.yearOfBirth);
console.log(sena.job);
console.log(sena.calculateAge());

This Kullanımı

this anahtar kelimesi üzerinde bulunduğumuz objeyi simgeler ve this.property_name ve this.method_name ifadeleri o anki objemizin özelliklerini ve metodlarını vurgular.

Yukarıda yaptığımız örneği incelyebiliriniz.

Construcor tanımlamanın ikinci bir yöntemi daha var bunu da bırakıyorum buraya hangisini kullanacağınız size kalmış.

//Person Constructor 2.tanımlama yöntemi
let Person = function (name, yearOfBirth, job) {
    this.name = name;
    this.yearOfBirth = yearOfBirth;
    this.job = job;
    this.calculateAge = function () {
        return 2020 - this.yearOfBirth;
    }
}

Yorum yazın

BENZER YAZILAR