new
ile bir işlev çağrıldığında, çağrılan işlevi şu şekilde kullanarak yeni bir nesne oluşturulur:
"kurucu" açıklamanız gerekir:
function MyFunction() {}
const myObject = new MyFunction();
typeof myObject;
> "object"`
Bu, bir "oluşturucu fonksiyon"un bir şablon görevi görür. aynı yapısal kalıbı izleyen nesnelerden yararlanın:
function MyFunction() {
this.myProperty = true;
}
const myObject = new MyFunction();
myObject.myProperty;
> true
Oluşturucu içindeki this
değeri
işlevi, oluşturulan nesneyi ifade eder ve nesnenin doldurulmasını sağlar
özellikleri ve yöntemleri içerir. Bu şekilde
veri değerlerini ve işlem yapmak için gereken yöntemleri içeren nesnelerin oluşturulması
"kapsülasyon" adlı bir kavram, söz konusu verileri tek bir taşınabilir birim olarak
function MyFunction( myArgument ) {
this.myValue = myArgument;
this.doubleMyValue = () => myArgument * 2;
}
const myObject = new MyFunction( 10 );
myObject.myValue;
> 10
myObject.doubleMyValue();
> 20
this
mevcut yürütmeyi belirtir
fonksiyonun bağlamıdır; yani yapıcı fonksiyonun aynı
kurallarını diğer herhangi bir işlev olarak this
değerine ayarlayın. Örneğin, bir kurucu olarak tasarlanan bir işlev, bağımsız olarak çağrıldığında this
değeri için evrensel bağlama kullanır:
function MyFunction() {
console.log( this );
}
const myObject = new MyFunction();
> MyFunction { }
MyFunction(); // Global `this` binding outside of strict mode is `globalThis`
> Window { … }
(function() {
"use strict";
function MyFunction() {
console.log( this );
}
MyFunction(); // Global `this` binding inside of strict mode is `undefined`
}());
> undefined
Yapıcı fonksiyonun ilk karakteri, ilk harfini büyük yapmak
tarafından oluşturulan adlandırma kalıbını izleyerek JavaScript'in yerleşik
fabrika işlevleri. Bu terimlerin bazen birbirlerinin yerine kullanıldığını görebilirsiniz
oluşturucu fonksiyonları (yeni oluşturulmuş bir yapıda çalışması amaçlanan fonksiyonlar)
new
anahtar kelimesiyle çağrıldığında nesne ("fabrika]'dan farklıdır)
fonksiyonları," Bu, açıkça return
nesne:
function myFunction( myArgument = false ) {
return { "myProperty" : myArgument };
}
const myObject = myFunction( true );
myObject;
> Object { myProperty: true }
Temel ilkeler aynı olsa da özelleştirilebilir kurucu fonksiyonlarına tam özellikli ES6'da kullanıma sunulan Sınıf söz dizimi.