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 ilkelnumbertürünü saran nesne türüdür.Numbernesnesini açıkça oluşturarak sayılarınumbergibi işleyebilirsiniz, ancak genellikle ilkelnumbertürünün kullanılması önerilir.
typeof numObject"object"iken,typeof 42"number"olacaktır.
newoperatörünü kullanarak yeni bir sarmalayıcı nesne oluşturmanın,Numberişlevini çağırmaktan farklı bir sonuç verdiğine dikkat edin. Bir fonksiyon olarak çağrıldığında, ilkel birnumberdöner.
String
1let strObject = new String("Hello"); // Wrapper object
2
3console.log(typeof strObject); // object
4console.log(strObject.valueOf()); // Hello
- Bu, ilkel
stringtürünü saran bir nesne türüdür.Stringnesnesini kullanarak dizgenin özelliklerine ve yöntemlerine erişebilirsiniz, ancak genellikle ilkelstringtürü kullanılır.
typeof strObject"object"iken,typeof "Hello""string"olacaktır.
Numbergibi,Stringişlevi çağrıldığında bir ilkelstringtü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
booleantürünü saran bir nesne türüdür. Ayrıca birBooleannesnesi açıkça oluşturabilirsiniz, ancak genellikle ilkelbooleantürü kullanılır.
typeof boolObject"object"iken,typeof true"boolean"olacaktır.
Number'a benzer şekilde,Booleanişlevini çağırmak bir ilkelbooleantü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()); //
ObjectkullanarakSymboliçin bir sarmalayıcı nesne oluşturabilirsiniz, ancak genellikle doğrudanSymbolilkel 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,undefinedvesymbolgibi hafif türler. - Sarmalayıcı Nesneler: Geçici olarak ilkel türlerden dönüştürülen
Number,StringveBooleangibi nesneler.
Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.