JavaScript'te Sarıcı (Wrapper) Nesneler

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 ilkel number türünü saran nesne türüdür. Number nesnesini açıkça oluşturarak sayıları number gibi işleyebilirsiniz, ancak genellikle ilkel number 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 bir number 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 ilkel string türü kullanılır.

typeof strObject "object" iken, typeof "Hello" "string" olacaktır.

  • Number gibi, String işlevi çağrıldığında bir ilkel string 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 bir Boolean nesnesi açıkça oluşturabilirsiniz, ancak genellikle ilkel boolean türü kullanılır.

typeof boolObject "object" iken, typeof true "boolean" olacaktır.

  • Number'a benzer şekilde, Boolean işlevini çağırmak bir ilkel boolean 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 kullanarak Symbol için bir sarmalayıcı nesne oluşturabilirsiniz, ancak genellikle doğrudan Symbol 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 ve symbol gibi hafif türler.
  • Sarmalayıcı Nesneler: Geçici olarak ilkel türlerden dönüştürülen Number, String ve Boolean gibi nesneler.

Yukarıdaki makaleyi, YouTube kanalımızda Visual Studio Code'u kullanarak takip edebilirsiniz. Lütfen YouTube kanalını da kontrol edin.

YouTube Video