new Yapıcı Operatörü
Bizler şu ana kadar değişkenleri özüne uygun (literal) bir şekilde oluşturduk. Yani:
Değişkenleri, tipinin özellik ve metotlarına sahip bir 'nesne' olarak oluşturmak da mümkün. Bunu yapıcı bir fonksiyon olan new
operatörü ile yaparız. Deneyelim.
new
operatörü ile oluşturulan tüm numuneler object
tipinde olur.
Normalde ilkel tipler doğrudan değeri tutarlar fakat new
ile deklare edilen değişkenler aksi yapılmamışsa belleğin heap bölümünde referans (adres) tutarlar.
new
operatörüyle oluşturulan numune, örneklendirilen öğenin (string
, number
, vs.) boş bir modelinden (prototip) oluşturulur. Bu sebeple numuneler, örneklendirilen öğenin referansını tutmaz, heap bölümünde kendine ait bir referansı olur. Yani:
Object.assign()
ile bir nesneden yeni bir nesne oluşturmak istediğimizde yaptığımız gibi fakat daha veciz bir şekilde. Örnek.
Bir numune oluşturmak için bu işlemi new
operatörü ile yapalım. Fakat öncesinde isci
öğesini bir fonksiyon halinde yapılandıralım.
new
operatörü ile oluşturulan numunelerde oluşturulduğu öğenin ( string
, number
, function
vb. ) tüm özellik ve metotları bulunur.
Kendisinden new
operatörü ile numuneler üretilecek fonksiyon isimlerinin ilk harfi büyük yazılır. Bu prototipler için bir gelenektir, zorunluluk değil.
Öğelerin bir prototipi (tüm özelliklerine haiz boş hali) vardır. Peki bir öğenin tüm numunelerine sonradan bir özellik eklemek istersek ? Bunun için öğenin prototype
'ini kullanacağız. Önceki koddan devam edersek.
Bazı öğeler (sınıf, nesne veya fonksiyon) özüne uygun (literal) bir şekilde oluşturulabileceği gibi new
operatörü ile de oluşturulabilir. Bunlar:
new Array()
new Object()
new String()
new Number()
new BigInt()
new Boolean()
new Function()
Fakat bazı öğeleri oluşturmanın doğrudan bir yöntemi (literal) yoktur. Bunları sadece new
operatörü ile oluşturabiliriz. Örnek:
new Map()
new Set()
new Symbol()
new Error()
Last updated