JavaScript Temelleri

Bölüm 5

Boolean Nesne Sınıfı

Bölüm 5 Sayfa 1

5.1 - Boolean Nesne Sınıfının Tanıtımı

Öntanımlı Boolean nesne sınıfı, Object nesne sınıfının bir alt sınıfıdır. 2.2.6 deki şemada görülen JavaScript nesne hiyerarşisinde, Boolean nesne sınıfının aynı zamanda Global JavaScript Nesnesinin de bir alt sınıfı olduğu görülmektedir. Nesnelerle çalışma yöntemleri 2.6 bahsinde, JavaScript nesne teknolojisi 3.4.5 bölümünde detaylı olarak incelenmiştir. Boolean nesne sınıfı incelenmeden önce bu konularaın yeniden incelenmesi yararlı olacaktır.

Boolean nesne sınıfı, mantıksal değerleri ilgilendirmektedir. JavaScript programlama dilinde, sadece 2 tane ilkel mantıksal değer bulunmaktadır. Bunlar, false ve true değerleridir. Bu nedenle, Boolean nesne sınıfı, çok kısıtlı sayıda değeri ilgilendiren bir nesne sınıfıdır. Mantıksal değerler çoğunlukla ilkel değerler halinde kullanıldıklarından, Boolean nesne sınıfının uygulanma alanı yok denilecek kadar azdır.

5.2 -Boolean Nesne Sınıfı Örnekleri Yapılandırıcısı

Boolean nesne sınıfı örneklerinin yapılandırıcı fonksiyonu, Boolean() fonksiyonudur. Bu fonksiyonun görevlerinden biri, yeni Boolean nesne sınıfı örneklerinin yapılandırılmasıdır. Kullanımı,

değişken = new Boolean([değer]);
		

şeklindedir. Burada

değişken = yeni Boolean sınıfı (mantıksal nesne sınıfı) nesne örneğinin atandığı değişken adıdır.

Boolean() mantıksal nesne sınıf örnekleri yapılandırıcısının yapılandırdığı yeni Boolean nesne sınıfı örneğinin başlangıç özellikleri, Boolean() nesne yapılandırıcısına aktarılan argümanın değerine bağlıdır.

Yeni oluşturulan Boolean sınıfı nesne örneğinin içsel [[Prototype]] özelliği, Boolean prototip nesnesine bağlanır. Bu prototip, Boolean.prototype nesnesinin güncel değeridir. Burada çok önemli bazı prensipleriı yeniden tekrarlıyoruz: "Prototipi olmayan bir nesne örneği oluşturulamaz. Her oluşturulan nesne örneği, oluşturan yapılandırıcı fonksiyonun belirttiği sınıf prototipine içsel olarak bağlanır. Nesne örneklerinin prototype özellikleri yoktur. Nesne Örneklerinin yapıları, kendilerinin oluşturan yapılandırıcı fonksiyonun belirttiği nesne sınıfının yapısıdır. Sınıf ve nesne örneği yapıları statik değildir istendiğinde güncellenebilir". Bu durumda, her mantıksal nesne örneğinin, mantıksal nesne prototipinin belirttiği güncel özelliklere sahip olacağı anlaşılabilir.

Yeni oluşturulan mantıksal sınıf nesne örneğinin veri tipi object olarak belirlenir.

Yeni oluşturulan mantıksal sınıf nesne örneğinin [[value]] özelliği, Boolean() nesne sınıfı nesne örnekleri yapılandırıcısına aktarılan argümanın değerine bağlı olarak aşağıdaki tabloya göre belirlenir:

Tablo 5.2 -1 toBoolean Operatörü
Veri Tipi Sonuç
undefinedfalse
nullfalse
Mantıksal Sonuç Veriye Eşittir. (Dönüşüm Yok !)
Sayısal +0,-0 ve NaN değerleri için false diğer değerler için true
Sözel Boş bir karakter dizgisi için false diğer değerler için true
Nesne true

Gerek içsel [[value]] özelliği, gerekse toBoolean işlemcisi, JavaScript yorumlayıcısının iç kodlarıdır ve kullanıcılara kapalıdır. Kullanıcıyı ilgilen yönü ise, mantıksal sınıftan bir nesne örneği yaratıldığında, bir iç mekanizmanın harekete geçmesi ve yukarıdaki tabloya göre, mantıksal nesne örneğinin bir ilkel mantıksal değer karşılığını hesaplamasıdır. Bu değer karşılığı, bir mantıksal sınıf nesne örneğinin programlarda aynen mantıksal bir ilkel veri gibi kullanılabilmesini sağlamaktadır.

Generik nesne sınıf yapısı çok esnek olduğundan, generik nesne sınıf örneklerinin ilkel değer karşılıkları otomatik olarak hesaplanmaz. Fakat, mantıksal nesne sınıfı özel bir sınıftır ve veri yapısı, generik nesne sınıfına göre çok daha belirlidir. Bu nedenle, mantıksal bir nesne örneğinin ilkel değer karşılığı daha kolay hesaplanabilmekte ve bir mantıksal nesne örneği, mantıksal bir ilkel değer gibi işlev görebilmektedir. Yine de, çok gerekli olmadıkça, mantıksal değerler, ilkel mantıksal değer olarak kullanılmalıdır.

5.3 - Boolean Nesne Sınıfı Örnekleri Yapılandırıcısının Özellikleri

Boolean()nesne sınıfı örnekleri yapılandırıcısı, her fonksiyon gibi, Function nesne sınıfının bir örneğidir. Bu fonksiyon nesne sınıfı örneğinin öntanımlı olarak sadece bir tane özelliği vardır. Bu özellik prototype özelliğidir. Kullanıcılar isterlerse, her fonksiyon nesne sınıfı örneği gibi, Boolean() mantıksal nesne sınıfı örneklerinin yapılandırıcı fonksiyonuna da istedikleri kadar yeni özellik ekleyebilirler.

Boolean() mantıksal nesne sınıfı örneklerinin yapılandırıcısının içsel argüman uzunluğu ölçütü length özelliğinin değeri 1 olarak verilmiştir. Bu durumda, yapılandırıcı argümansız veya tek argümanla çalıştırılabilecektir. Argüman sayısı birden fazla olursa, sadece ilk argüman kullanılacak, diğerleri gözardı edilecektir.

5.3.1 - Boolean Nesne Sınıfı Örnekleri Yapılandırıcısının prototype Özelliği

Boolean.prototype nesnesinin değeri, öntanımlı mantıksal sınıf prototip nesnesidir. Yani,

Boolean.prototype = {mantıksal nesne sınıfı prototip nesnesi}
		

Mantıksal sınıf prototip nesnesinin kendisi de mantıksal nesne sınıf yapısında bir nesnedir. Bu nesne, mantıksal sınıf prototip nesnesi veya mantıksal nesne sınıf prototipi olarak adlandırılabilir. Bu nesne Java programlama dilindeki mantıksal sınıf nesnesinin görevini yapar. Tüm öntanımlı nesnler gibi, mantıksal sınıf nesnesinin prototipinin de yazılımı kullanıcıya kapalıdır. Özellikleri spesifikasyonda belirtildiği kadarı ile anlaşılabilir. Mantıksal nesne sınıfı prototipinin içsel [[Class]] özelliği "Boolean" olarak belirlenmiştir. Bu şekilde, prototipin kendisinin de bir mantıksal nesne örneği olduğu anlaşılmaktadır. Mantıksal nesne prototipinin başlangıç değerinin false olacağı belirtilmiştir. Bu şekilde, boş bir mantıksal nesne örneğinin mantıksal ilkel değer karşılığı da false olacaktır. Mantıksal nesne sınıfı prototipinin içsel [[Prototype]] özelliğinin değerinin "Object" nesne sınıfının prototipi olduğu belirlenmiştir. Bu bilgi ile, generik nesne sınıfının, mantıksal nesne sınıfının üst sınıfı olduğu belirlenmiş olmaktadır. Nesne hiyerarşisi konusunda biligilerimizi lütfen hatırlayınız.

5.4 - Boolean Nesne Sınıfı Prototipinin Özellikleri

Mantıksal nesne sınıfı, generik nesne sınıfının bir alt sınıfıdır ve generik nesne sınıfının tüm özellikleri, alt sınıf olan mantıksal nesne sınıfında da geçerli olur. doğal olarak, sadece başlangıçta...Çünkü tüm kalıtsal özellikler, aktarılmış oldukları alt sınıfta isimleri aynı kalmasına karşın, içerikleri değiştirilebilir.

Generik nesne sınıfının prototipinin, birisi değer özelliği, diğer altısı fonksiyon özelliği (metot) olmak üzere toplam yedi özelliği bulunmaktadır. Değer özelliği, constructor özelliği, metotlar ise, ise, toString(), toLocaleString(), valueOf(), hasOwnProperty(), isPrototypeOf(), propertyIsEnumerable() metotlarıdır. Bunların hepsi de başlangıçta orijinal yazılımları ile mantıksal nesne sınıfı için de geçerlidir.

Bazı durumlarda, kalıtımla aktarılmış özelliklerin içeriği, yeni nesne sınıfı için yeterli olmayabilir, bu durumda, özelliğin ismi aynı kalır, fakat içeriği yeni nesne sınıfı için daha uygun olacak şekilde değiştirilir. Buna özellik veya metot bindirmesi denildiğini biliyoruz. Mantıksal nesne prototipi düzeyinde, üç özelliğe bindirilmiştir. Bunlar constructor özelliği ile, toString() ve valueOf() metotlarıdır.

Generik nesne sınıfı düzeyinden kalıtımla aktarılmış olan ve mantıksal nesne sınıfı düzeyinde bindirilmemiş olan özellikler, aynen generik nesne sınıfındaki gibi işlev yapacaklarından, burada yeniden incelenmelerine gerek yoktur. Burada sadece mantıksal nesne sınıfı prototipinde isimleri aynı kalmasına karşın yazılımları yenilenmiş (bindirilmiş) olan özelliklerin incelenmesi yeterli olacaktır.

Tüm orijinal ve yenilenmiş yazılımlar, öntanımlı olduklarından dolayı JavaScript yorumlayıcısının kendi iç yazılımları olduğundan kullanıcıya kapalıdır. Bunların sadece kullanım yöntemleri kullanıcının erişimine açıktır.

5.4.1 - Boolean Nesne Sınıfı Prototipinin constructor Özelliği

Mantıksal nesne sınıfı prototipinin constructor özelliğine,

Boolean.prototype.constructor
		

şeklinde erişilir. Bu özelliğin değeri, öntanımlı mantıksal sınıf nesne örnekleri yapılandırıcısı olan Boolean() fonksiyonudur.

5.4.2 - Boolean Nesne Sınıfı Prototipinin toString() Metodu

Mantıksal nesne sınıfı prototipinin toString() metodu, eğer this değeri true ise, 'true', aksi halde 'false' şeklinde bir karakter dizigisi döndürür. Bu konuda bir JavaScript programının, bir uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...
var izleme = new Boolean();
sonuçVeTipYaz('izleme.toString() = ', izleme.toString(), 'b5.4.2-uyg-1-sonuç-1'); 
...
		

Bu programın Sonucu :

Eğer this nesnesinin içsel [[Class]] özelliğinin değeri "Boolean"değilse, JavaScript yorumlayıcısı, this nesnesinin [[Class]] özelliğini algılayarak, veriye göre en uygun bindirilmiş toString() metodunu bulur ve işlemi sonuçlandırır.

5.4.3 -Boolean Nesne Sınıfı Prototipinin valueOf() Metodu

Mantıksal nesne prototipinin valueOf() metodu, this değerinin mantıksal ilkel değer tipinde mantıksal ilkel değer karşılığını döndürür. Dönüştürme, Tablo 5.2 - 1 de belirtilen yönteme göre gerçekleştirilir. Bu metodun kullanımı generik nesne sınıfı prototipindeki valueOf() metodunun uygulanması ile aynıdır. Bu konuda bir JavaScript programının, bağlı olduğu uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...
var izleme = new Boolean();
sonuçVeTipYaz('izleme.valueOf() = ', izleme.valueOf(), 'b5.4.3-uyg-1-sonuç-1'); 
...
		

Bu programın Sonucu :

Eğer this nesnesinin sınıfı "Boolean"değilse, JavaScript yorumlayıcısı, this nesnesinin [[Class]] özelliğini algılayarak, veriye göre en uygun bindirilmiş valueOf() metodunu bulur ve işlemi sonuçlandırır.

5.5 - Boolean Nesne Sınıfı Örnekleri

Boolean nesne sınıfı örneklerinin, Boolean nesne sınıfı prototipinde belirtilenlerden başka özellikleri yoktur.

5.6 - Boolean() Fonksiyonu

Global JavaScript Nesnesinin Boolean() metodu, tip dönüştürücü bir fonksiyon olarak da kullanılabilir. Kullanımı,

Sonuç = Boolean(Veri);
		

şeklindedir. Bu fonksiyon geriye bir mantıksal ilkel değer (mantıksal nesne değil) döndürür. Geriye döndürülen değer, JavaScript yorumlayıcısının kullanıcıya kapalı toBoolean işlemcisini çağırarak gerçekleştirdiği veri dönüştürme işleminin sonucudur. Bu içsel işlemcinin çeşitli veri tipleri ile vereceği sonuçlar, Tablo 5.2-1 de verilmiştir.

Bu konuda bir uygulama sayfasına bağlı JavaScript Programı ve verdiği sonuçlar aşağıda görülmektedir:

...

var veri = 1;

sonuçVeTipYaz('veri = ', veri, 'b5.6-uyg-1-sonuç-1');

sonuçVeTipYaz('Boolean(veri) = ', Boolean(veri), 'b5.6-uyg-1-sonuç-2');

...
		

Bu programın Sonucu :

Bir programda, Boolean() fonksiyonu ile mantıksal ilkel verilerin mantıksal nesne sınıf örneğine dönüştürülmesi çok sıradışı olacaktır. Mantıksal değerler genel olarak true veya false şeklinde mantıksal ilkel değerler olarak kullanılır ve başka veri tiplerinden mantıksal ilkel değerlere veri dönüştürülmesi çok sık rastlanılan bir işlem değildir.

Valid XHTML 1.1