JavaScript'te Sarıcı (Wrapper) Nesneler
Bu makale, JavaScript'teki sarıcı nesneler hakkında açıklamalar yapar.
YouTube Video
Sarmalayıcı Nesneler
JavaScript'in ilkel türleri ve bunları işlemek için nesneleri (sarmalayıcı nesneler) vardır.
Primitif Türler
İlkel türler tek bir değeri ifade eder ve basit ve hafiftir. Değiştirilemez (sabit) olan bunlar, doğrudan nesne metotlarına veya özelliklerine sahip değildir, ancak işlemler için geçici olarak sarmalayıcı nesnelere dönüştürülebilirler.
string
ve number
ilkel türlere örnek olarak verilebilir. Öte yandan, sarmalayıcı nesneler büyük harfle başlar, örneğin String
ve Number
.
Sarıcı Nesneler
İlkel türleri işlemek için JavaScript geçici olarak sarmalayıcı nesneler (Object
sarmalayıcıları) oluşturur. Sarmalayıcı nesneler, ilkel türler için yöntemler ve özellikler içerir.
Number
1let numObject = new Number(42); // Wrapper object
2
3console.log(typeof numObject); // object
4console.log(numObject.valueOf()); // 42
5
6let numValue = Number(42); // Return primitive value
7
8console.log(typeof numValue); // number
9console.log(numValue); // 42
Number
, bir ilkelnumber
türünü saran nesne türüdür.Number
nesnesini açıkça oluşturarak sayılarınumber
gibi işleyebilirsiniz, ancak genellikle ilkelnumber
türünün kullanılması önerilir.
typeof numObject
"object"
iken,typeof 42
"number"
olacaktır.
new
operatörünü kullanarak yeni bir sarmalayıcı nesne oluşturmanın,Number
işlevini çağırmaktan farklı bir sonuç verdiğine dikkat edin. Bir fonksiyon olarak çağrıldığında, ilkel birnumber
döner.
String
1let strObject = new String("Hello"); // Wrapper object
2
3console.log(typeof strObject); // object
4console.log(strObject.valueOf()); // Hello
- Bu, ilkel
string
türünü saran bir nesne türüdür.String
nesnesini kullanarak dizgenin özelliklerine ve yöntemlerine erişebilirsiniz, ancak genellikle ilkelstring
türü kullanılır.
typeof strObject
"object"
iken,typeof "Hello"
"string"
olacaktır.
Number
gibi,String
işlevi çağrıldığında bir ilkelstring
türü döndürür.
Boolean
1let boolObject = new Boolean(true); // Wrapper object
2
3console.log(typeof boolObject); // object
4console.log(boolObject.valueOf()); // true
- Bu, ilkel
boolean
türünü saran bir nesne türüdür. Ayrıca birBoolean
nesnesi açıkça oluşturabilirsiniz, ancak genellikle ilkelboolean
türü kullanılır.
typeof boolObject
"object"
iken,typeof true
"boolean"
olacaktır.
Number
'a benzer şekilde,Boolean
işlevini çağırmak bir ilkelboolean
türü döndürür.
BigInt
1let bigIntObject = Object(9007199254740991n); // Wrapper object
2
3console.log(typeof bigIntObject); // object
4console.log(bigIntObject.valueOf()); // 9007199254740991n
5
6let bigIntValue = BigInt(9007199254740991); // Return primitive BigInt
7
8console.log(typeof bigIntValue); // bigint
9console.log(bigIntValue); // 9007199254740991n
10
11// Error
12let bigIntObject2 = new BigInt(9007199254740991n);
Object
を使ってBigInt
のラッパーオブジェクトを生成できますが、通常はプリミティブ型のbigint
を直接使うのが一般的です。
typeof bigIntObject
は"object"
であるのに対し、typeof 9007199254740991n
は"bigint"
です。
BigInt
を関数として呼び出すとプリミティブなbigint
を返しますが、new
演算子をつけてBigInt
のラッパーオブジェクトを生成することはできません。
Symbol
1let symObject = Object(Symbol("id")); // Wrapper object for Symbol
2
3console.log(typeof symObject); // object
4console.log(symObject.valueOf()); //
Object
kullanarakSymbol
için bir sarmalayıcı nesne oluşturabilirsiniz, ancak genellikle doğrudanSymbol
ilkel türünü kullanırsınız.
İlkel Türler ile Sarmalayıcı Nesneler Arasındaki Farklar
- İlkel türler, hafif ve bellek açısından verimlidir, ancak doğrudan özelliklere veya yöntemlere sahip değildir. Ancak, JavaScript'te ilkel türlerle bile gerekirse yöntemler ve özellikler sağlamak için geçici sarmalayıcı nesneler otomatik olarak oluşturulur.
1let text = "Hello";
2
3// A temporary String object is created,
4// allowing access to the length property
5console.log(text.length);
- Sarmalayıcı nesneler, bellek ve performansı etkileyebilecek şekilde açıkça oluşturulmuş nesnelerdir, bu yüzden genellikle ilkel türlerin kullanılması önerilir.
Sonuç
- İlkel Türler: Doğrudan yöntemlere sahip olmayan
number
,string
,boolean
,null
,undefined
vesymbol
gibi hafif türler. - Sarmalayıcı Nesneler: Geçici olarak ilkel türlerden dönüştürülen
Number
,String
veBoolean
gibi nesneler.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.