İlginizi Çekebilir
  1. Ana Sayfa
  2. Nasıl Yapılır?

JavaScript Prototypes Nedir?

JavaScript Prototypes Nedir?
Javascript-prototypes
+ - 0

JavaScript Prototypes Giriş

JavaScript Prototypes Nedir? JavaScript, prototiplere dayalı nesne tabanlı bir dildir. Bu, bir işlev oluşturduğumuzda JavaScript’in, işlevin içine Prototip Nesnesi olarak da bilinen bir dahili özellik eklediği anlamına gelir. Bu, diğer tüm nesnelerin bu yöntemleri ve özellikleri devralmasını sağlayan yöntemler ve özellikler ekleyebileceğimiz anlamına gelir.

Aşağıdaki örneği göz önünde bulundurun:
Dog nesnesi, bir işlev yapıcısı kullanılarak oluşturulur ‘ function Dog(name, age, breed)‘ Dog’un bir prototip özelliği vardır ve prototip özelliğinin bir yapıcı nesnesi vardır.

function Dog(name,age,breed){
    this.name = name;
    this.age = age;
    this.breed = breed;
}
console.log(Dog.prototype)

Prototip özelliğinin değeri olmadığından, bu console.log boş bir nesne { } gösterecektir.

javascript prototype

JavaScript Nesnelerini Anlamak

Prototipe geçmeden önce JS’deki nesneler hakkında konuşalım. Nesneler, anahtar/değer çiftleridir. JS’de bir nesne yaratmanın bir yolu, fonksiyon oluşturuculardır (örnek yukarıda gösterilmiştir) Nokta gösterimini kullanarak bir nesneye özellikler ve değerler ekleyebilirsiniz.

function Dog(){
  this.name = "Fındık",
  this.age = 10,
  this.breed = "Golden"
}

const dog1 = new Dog();
const dog2 = new Dog();

Yapıcı işlevini kullanarak bir nesne oluşturma örneği.

Object.create

JS’de nesneler yaratmanın başka bir yolu olan Object.create. Bu konuda bilgi edinmek için lütfen bkz MDN üzerinde Object.create()Bu yöntemin daha derinlemesine anlaşılması için.

Prototip Kalıtım

Dolayısıyla JavaScript’te bir yapıcı işlevine özellikler ve yöntemler eklemek için bir prototip kullanılabileceğini biliyoruz. Nesneler, bir prototipten özellikleri ve yöntemleri devralır. Aşağıdaki örneği düşünün:


//constructor function
function Dog(){
  this.name = "Fındık",
  this.age = 10,
  this.breed = "Golden"
}

//Obje Oluşturma
const dog1 = new Dog();
const dog2 = new Dog();

//yapıcı işlevine özellik ekleme 
Dog.prototype.gender = "male"


//property value of Person
console.log(Dog.prototype)


//inheriting the property from prototype
console.log(dog1.gender)
console.log(dog2.gender)

Çıktı:


Dog {gender: "male"}
male
male

Yukarıdaki kodda, Dog.prototype.gender = 'male'– nesne dog1ve dog2 kullanarak Dog yapıcı işlevine yeni bir ‘gender’ özelliği ekledik.Dog’un prototip özelliğinden ‘gender’ özelliğini devralır ve buna erişebilir.

Prototipi Değiştirme

Nesneler prototip nesnesinden miras aldığından, bir prototip değeri değiştirilirse tüm yeni nesneler özellik değerini değiştirecektir. Önceden oluşturulmuş tüm nesneler önceki değere sahip olacaktır. Aşağıdaki örneği düşünün:

//constructor function
function Dog(){
  this.name = "Fındık",
  this.age = 10,
  this.breed = "Golden"
}
//Özellik Ekleme
Dog.prototype.color = "Siyah"

//Obje Oluşturma
const dog1 = new Dog()


console.log(dog1.color) // Siyah

Dog.prototype = {color: "Brown"}

//yeni obje oluşturma
const dog2 = new Dog()

console.log(dog2.color) // Brown
console.log(dog1.color) // Siyah

Prototip rengini Siyahtan kahverengiye değiştirmiş olsak da, dog1 hala önceki siyah değerine sahiptir.

Prototip Zincirleme

Bir nesne, yapıcı işlevindeki ve prototip nesnesindeki aynı özelliğe erişmeye çalışırsa, nesne, özelliği yapıcı işlevinden alır.

//constructor function
function Dog(){
  this.name = "Fındık",
  this.age = 10,
  this.breed = "Golden"
}


//add,ng Property
Dog.prototype.name = "Paspas"
Dog.prototype.age = 5
Dog.prototype.breed = "Buldog"

const dog1 = new Dog()

console.log(dog1.name) // Fındık
console.log(dog1.age) // 10
console.log(dog1.breed) // Buldog

Yukarıdaki örnekte, bir mülk name yapıcı işlevinde ve ayrıca yapıcı işlevinin prototip özelliğinde bildirilir. Program kodu çalıştırdığında, dog1.name adında bir özellik olup olmadığını görmek için yapıcı işlevine bakar name. Yapıcı işlevi ‘ Fındık ‘ değerine sahip name özelliğine sahip olduğundan, nesne ‘ Paspas ‘ yerine bu özellikten değer alır. Ancak, yapıcı işlevi bir özellik değerine sahip olmadığı için breed kod, prototip nesnesine bakar ve onu oradan devralır. Öyleyse, breed ‘ Buldog ‘ olarak çıktı alır.

Prototip, bir nesnenin yöntemlerini ve özelliklerini prototip nesnesinden devraldığı kodun yeniden kullanımıdır. Nesneler, yapıcı işlevi veya Object.create() kullanılarak oluşturulur. Prototip, belirli bir nesnenin tüm örneklerine yöntemleri kolayca tanımlamamıza izin verdiği için son derece kullanışlı ve önemlidir. Yöntem prototipe uygulandığından, bellekte yalnızca bir kez saklanır, ancak bir nesnenin her örneği ona erişebilir! Ne kadar havalı!

Yazar Hakkında

Bu Yazıyı Yorumla