JavaScript Temelleri

Bölüm 6

Number Nesne Sınıfı

Bölüm 6 Sayfa 1

6.1 - Number Nesne Sınfının Tanıtımı

Öntanımlı Number sınıf nesnesi, Object nesne sınıfının bir alt sınıfıdır. Number nesne sınıfı, sayısal değerleri ilgilendirmektedir ve sayılarla çalışmak için gerekli olanakların sağlanması amacı ile oluşturulmuştur.

6.2 - Number Nesne Sınıfı Örnekleri Yapılandırıcısı

Number nesne sınıfının yapılandırıcı fonksiyonu, Number() fonksiyonudur. Bu fonksiyon yeni Number nesne sınıfı örneklerinin yapılandırılmasında kullanılır. Kullanımı,

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

şeklindedir. Burada

değişken = yeni Number sınıfı nesne örneğinin atandığı değişken adıdır. Number() sayısal nesne yapılandırıcısının yapılandırdığı yeni Number sınıfı örneğinin başlangıç özellikleri, Number() nesne yapılandırıcısına aktarılan argümanın değerine bağlıdır.

Yeni oluşturulan Number sınıfı nesne örneğinin içsel [[Prototype]] özelliği, Number sınıfı prototip nesnesine bağlanır. Bu prototip, Number.prototype nesnesinin başlangıç değeridir. Bu durumda, her Number sınıfı nesne örneğinin, Number nesne prototipinin belirttiği güncel özelliklere sahip olacağı açıktır.

Yeni oluşturulan Number sınıf nesne örneğinin veri tipi object olarak belirlenir. Bu ayrıntı önemlidir, sayısal ilkel değerlerin veri tipi number iken, sayısal nesne sınıfı örneklerinin veri tipi object olmaktadır. Number nesne sınıfı örneklerinin içsel [[Class]] özelliğinin, aynı bölüm 3.4 de uygulanmış olan yöntemle sorgulanması ile bu sonuç görülebilir.

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

Tablo 6.2-1 toNumber Operatörü
Veri Tipi Sonuç
undefined NaN
null +0
sayısal Eğer veri true ise +1 false ise +0
Sayısal Sayıya dönüştürebilirse sonuç yoksa NaN
Sözel Boş bir karakter dizgisi için false diğer değerler için true
Nesne Önce ilkel değere sonra sayısal değere çevrilir.

Number nesnesinin örnekleri oluşturulur oluşturulmaz JavaScript yorumlayıcısının bir mekanizması harekete geçer ve yeni oluşan Number nesne örneğinin içsel [[Value]] değeri, yukarıdaki tablodan yararlanılarak hesaplanır. Artık nesne örneğinin her çağrılışında, örneğin bu [[Value]] özelliği kullanılır. Bu nedenle sayısal nesne örnekleri, kullanımda aynen ilkel sayısal değerler gibi hareket ederler. Fakat görünürdeki bu benzerlik yanıltıcıdır. Sayısal nesne örnekleri object sayısal ilkel değerler, number veri tipine sahiptir. JavaScript programlama dilinde, veriler, çok az özel durum dışında her zaman ilkel değerler olarak kullanılır. Sayısal bir değerin, çok az rastlanabilecek aşağıda açıklanan özel bir durum dışında, Number nesne sınıfı örneği olarak tanımlanmasına hiç gerek yoktur.

Number nesnesi çok kullanışlı özelliklere sahiptir. Bir sayısal ilkel değerin, bu özelliklerden birini çağırması halinde, JavaScript yorumlayıcısı verinin tipini, sayısal nesneye dönüştürür, özelliği uygular, sonucu döndürür ve veriyi tekrar ilkel sayısal değer haline geri döndürür. Doğal olarak bu biraz zaman alır. Bu yüzden, iterasyon sayısı yüksek döngülerde, bu durumla karşılaşılırsa, verinin doğrudan sayısal nesne örneği olarak tanımlanmasında yarar olacaktır. Bu çok sık rastlanmayan özel bir durumdur ve iterasyon sayısının on onbeş bin den aşağı olacağı durumlarda kazanılan süre önemli olmayabilecektir. Bu yüzden, sayısal bir değerin, sayısal nesne örneği olarak tanımlanmasına hiç gerek olmayabilir.

6.3 - Number Nesne Sınıfı Örnekleri Yapılandırıcısının Özellikleri

Number() sayısal nesne sınıfı örnekleri yapılandırıcısı, her fonksiyon gibi, Function nesne sınıfının bir örneğidir. Bu nesne sınıfı örneğinin öntanımlı olarak altı tane özelliği vardır. Bu özellikler, prototype, MAX_VALUE, Mın_VALUE, NaN, NEGATIVE_INFINITY, POSİTİVE_INFINITY özellikleridir. Kullanıcılar isterlerse, her fonksiyon nesnesi örneği gibi, Number nesne yapılandırıcı fonksiyonuna da de istedikleri kadar yeni özellik ekleyebilirler.

Number() sayısal nesne örnekleri yapılandırıcı fonksiyonuna eklenmiş olan özelliklerin, sayısal nesne sınıfının özellikleri ile bir ilgisi yoktur. Sayısal nesne sınıfının özelliklerinin envanteri, Number.prototype nesnesinin içeriğinde tutulur. Number() sayısal nesne örnekleri yapılandırıcısı, Global JavaScript Nesnesinin bir metodudur. Bu metoda eklenen bir özellik Global JavaScript Nesnesine eklenmiş sayılır ve global kapsam kazanır. Bu durumda, Number() nesne yapılandırıcı fonksiyonuna eklenmiş olan özellikler, öntanımlı global değişken olarak işlev yaparlar ve bunlara, Number.MAX_VALUE vb şeklinde ulaşılır.

Number() sayısal nesne örnekleri 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.

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

Number.prototype nesnesinin değeri, öntanımlı sayısal nesne sınıfı prototip nesnesidir. Yani,

Number.prototype = {sayısal prototip nesnesi}
		

Sayısal nesne sınıfı prototip nesnesinin Sayısal nesne sınıfı prototip nesnesinin [[Class]] özelliği "Number" dir yani kendisi de bir sayısal nesne sınfı nesnesidir. Bu nesnenin içsel [[Value]] değeri+0 dır yani,

Ux = new Number ()
		

şeklinde bir boş sayısal nesne örneği yaratılırsa, Ux değişkeninin başlangıç değeri +0 olacaktır. Sayısal nesne sınıfı prototip nesnesinin [[Prototype]] özelliğinin başlangıç değeri, "Object", nesne sınıfı prototip nesnesidir. Yani, Number nesne sınıfı, Object nesne sınıfının bir alt sınıfıdır.

6.3.2 - Number Nesne Sınıfı Örnekleri Yapılandırıcısının MAX_VALUE Özelliği

Number.MAX_VALUE değeri, çalışılabilecek en yüksek pozitif değer olan 1.7976931348623157x10 308 değerindedir. Bu konuda, Sayılarla çalışmak konusu yeniden incelenmelidir.

6.3.3 - Number Nesne Sınıfı Örnekleri Yapılandırıcısının MIN_VALUE Özelliği

Number.MIN_VALUE değeri, çalışılabilecek en küçük pozitif değer olan yaklaşık 5 10 -324 değerindedir.

6.3.4 - Number Nesne Sınıfı Örnekleri Yapılandırıcısının NaN Özelliği

Number.NaN özelliğinin değeri, NaN (Not a Number) değeridir. NaN Değeri literal olarak kullanılamaz sadece sayıya dönüştürülemeyn karakter dizgisi bir veri ile matematik işlem yapılmak istenmesi gibi durumlarda, JavaScript yorumlayıcısı tarafından yanıt olarak oluşturulur.

6.3.5 - Number Nesne Sınıfı Örnekleri Yapılandırıcısının NEGATIVE_INFINITY Özelliği

Number.NEGATIVE_INFINITY değeri, -infinity değeridir. Tüm bu değerler, JavaScriptDeneme programı ile kontrol edilebilir.

6.3.6 - Number Nesne Sınıfı Örnekleri Yapılandırıcısının POSITIVE_INFINITY Özelliği

Number.POSITIVE_INFINITY değeri, +infinity değeridir.

6.4 - Number Nesne Sınıfı Prototip Nesnesinin Özellikleri

Sayısal prototip nesnesinin yapısı, yine sayısal bir nesne örneğidir. sayısal prototip nesnesinin yapısı, başlangıçta generik nesne prototipidir. Bu durumda, sayısal nesne sınıfı, generik nesne sınıfının bir alt sınıfı olur ve generik nesne sınıfının tüm özellikleri, alt sınıf olan sayısal nesne sınıfının da başlangıç yapısı olarak geçerli olur. Doğal olarak bu yapıya, sayısal nesne sınıfında tanımlanan yeni özellikler eklenir. Generik nesne sınıfından kalıtımla aktarılan bazı özellikler gerekirse sayısal nesne sınıfına daha uygun olmaları için içerikleri yenilenir (bindirme) ve sayısal nesne sınıfının prototipi oluşur. Bu bir öntanımlı nesne prototipi olduğundan, kullnıcı tarafından yeni özellikler eklenmesi veya var olan özelliklere yeni tanımlar yazılması sağlık verilmez. Sadece, toLocaleString() özelliği için uygun görülen içerikler yazılabilir. Zorunlu durumlarda, yeni özellikler de eklenebilir.

Generik nesne prototipinin, birisi değer özelliği, diğer altısı 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 sayısal nesne sınıfı için de geçerlidir.

Sayısal nesne prototipi düzeyinde, dört özelliğe bindirilmiştir. Bunlar, constructor özelliği ile, toString(), toLocaleString() ve valueOf() metotlarıdır.

Generik nesne sınıfı düzeyinden kalıtımla aktarılmış olan ve sayısal 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 sayısal nesne sınıfı prototipinde yazılımları yenilenmiş olan özelliklerin incelenmesi yeterli olacaktır.

Tüm orijinal ve yenilenmiş yazılımlar, 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.

6.4.1 - Number Nesne Sınıfı Prototipinin constructor Özelliği

Sayısal nesne prototipinin constructor özelliğine,

Number.prototype.constructor
		

şeklinde erişilir. Bu özelliğin değeri, öntanımlı sayısal nesne örnekleri yapılandırıcısı olan, Number() fonksiyonudur.

6.4.2 - Number Nesne Sınıfı Prototipinin toString() Metodu

Sayısal nesne sınıfıprototipinin toString()metodu,

this.toString([Sayı Tabanı]);
		

şeklinde kullanılır. Eğer,

Bu konuda bir JavaScript programının, bir uygulama sayfasında verdiği sonuç, aşağıda görülmektedir:

...
var yoğunluk = new Number(13.6); 
sonuçVeTipYaz('yoğunluk.toString() = ', yoğunluk.toString(), 'b6.4.2-uyg-1-sonuç-1'); 
			...
		

Bu programın Sonucu :

Eğer this nesnesinin içsel [[Class]] özelliğinin değeri "Number" 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 bulduğu metodu uygulayarak sonuçlandırır.

6.4.3 - Number Nesne Sınıfı Prototipinin valueOf() Metodu

Sayısal nesne saınıfı prototipinin valueOf() metodu, this sayısal nesne sınıfı örneğinin, içsel [[Value]] değerini ilkel sayısal tip olarak döndürür. Dönüştürme, Tablo 6.2 - 1 de belirtilen içsel ToNumber işlemcisinin uygulanması ile gerçekleştirilir. Bu metodun kullanımı, generik nesne sınıfının 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 yoğunluk = new Number(13.6);
 
veriYaz(yoğunluk.valueOf(), 'b6.4.3-uyg-1-sonuç-1', 'b6.4.3-uyg-1-sonuç-2'); 
			...
		

Bu programın Sonucu :

yoğunluk.valueOf() : Veri Tipi :

Eğer this nesnesinin içsel [[Class]] özelliğinin değeri, "Number" 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.

6.4.4 - Number Nesne Sınıfı Prototipinin toLocaleString() Metodu

Sayısal Nesne Sınıfı Prototipinin toLocaleString() metodu, sayıların yerel olarak kullanıldığı biçimlerde yazılması için konulmuş bir mettotur. ECMAScript v3 de, dizi ve tarih nesne sınıfları yanında sayısal nesne sınıfının da öntanımlı toLocaleString() metotlarının toString() metodundan farklı yazılımları bulunmaktadır. Aşağıda verilmiş olan örnek, daha önce 6.4.2 bahsinde, toString() metodu incelenirken verilen örneğin, toLocaleString() metodu ile verdiği sonucun kontrolü amacını taşımaktadır. Bu JavaScript programı nın ilişkili olduğu bir uygulama sayfasında verdiği sonuç aşağıda görülmektedir:

...
var yoğunluk = new Number(13.6); 
sonuçVeTipYaz('yoğunluk.toLocaleString() = ', yoğunluk.toLocaleString(), 'b6.4.4-uyg-1-sonuç-1'); 
			...
		

Bu programın Sonucu :

Sonuçlar incelendiğinde, sECMA v.3 standırdının öntanımlı toLocaleString() metodunun verileri ilkel sözel veri tipine dönüştürme formatının, eski Avrpa tipi virgüllü notasyon olduğu görülmektedir. Oysa ki, ülkemizde, bilimsel ve mühendislik çalışmalarında S.I formatı (6.4.2-uyg-1 de olduğu gibi) uygulanmaktadır. Bu açıdan uygun olmayacak sonuçların kontrolu ve gerekirse yeniden yazılımında yarar bulunmaktadır.

6.4.5 - Number Nesne Sınıfı Prototipinin toFixed() Metodu

Bu metot, sayısal nesne örneklerinin değerini belirli sayıda ondalık ile sınırlanarak görüntülenmesini sağlar.Bu metodun kullanımı,

sayısalNesneÖrneği.toFixed([ondalık sayısı]);
		

şeklindedir. Buradaki isteğe bağlı argüman, sayının içereceği ondalık sayısıdır ve 1 ile 20 arasında değişebilir.. Bu metot geriye içeriği sayısal nesne sınıf örneğinin içsel [[Value]] değerinin biçimlendirilmiş şekli olan, karakter dizgisi tipinde bir değer döndürür. Sayısal nesne sınıf örneğinin değer ve tipi, biçimlendirme işleminden etkilenmez. Bu konuda bir uygulama sayfasına bağlı JavaScript Programı ve verdiği sonuçlar aşağıda görülmektedir:

...
var t =364.58359648;
sonuçVeTipYaz('Orijinal t = ' , t, 'b6.4.5-uyg-1-sonuç-1');
sonuçVeTipYaz('t.toFixed(2) = ', t.toFixed(2), 'b6.4.5-uyg-1-sonuç-1');
sonuçVeTipYaz('İşlemden Sonra t = ', t, 'b6.4.5-uyg-1-sonuç-1');
...
		

Program Sonucu :

Yukarıda görülen uygulama çok önemli sonuçlar vermektedir. Bunlardan ilki, toFixed() metodunun, sayısal nesne sınıfı örnekleri yanında, sayısal ilkel değerlere de uygulanabilmesidir. Bu çok önemli ve olgudur ve JavaScript yorumlayıcısının olağanüstü uyarlama yeteneğini yansıtmaktadır. toFixed() Metodu, this değerinin veri tipi sayısal bir ilkel değer bile olsa, bunu sayısal bir nesne örneğine dönüştürür ve argümanın belirttiği kadar bir ondalık sayısı ile bir karakter dizgisi verisi olarak geri döndürür. Uygulama sonuçlarından alınan ikinci önemli sonuç ise, orjinal verinin değer ve tipinin metodun uygulanmasından etkilenmediğidir. Metodun uygulanması öncesi ve sonrasında, t değişkeninin değeri ve veri tipi aynı kalmaktadır.

toFixed() Metodunun argümanı, önce bir tamsayıya dönüştürülmeye çalışılır. Eğer argüman tamsayıya dönüştürülemezse, veya undefined değerinde ise, 0 olarak kabul edilir ve biçimlendilmemiş orijinal this değeri, karakter dizgisi tipinde geri döndürülür.

toFixed() Metodunun this değeri NaN ise, metot geriye NaN döndürür ve bir hata oluşur. Bu hata belge çözümleyicilerinin bazılarında programın durdurulmasına neden olur, bazı belge çözümleyiciler ise bu hataları gözardı edebilirler.

toFixed() Metodunun argümanın değeri, 0<argüman>20 aralığında olmalıdır. Aksi halde bir RangeError istisnası fırlatılır, yakalanmazsa, bazı belge çözümleyicileri, argümanın kapsam dışı olduğu uyarısı ile programı durdurabilirler.

toFixed() Metodunun argüman sayısı sadece bir tane olmalıdır. Argüman sayısı birden fazla olursa, normal olarak sadece ilki kullanılacak, diğerleri gözardı edilecektir.

Yukarıda görülen uygulama da olduğu gibi, bir nesne metodunun , ilkel bir veriye uygulanmak istenmesi, JavaScript yorumlayıcısı için, bir miktar zaman kaybettirici olacaktır. Bu zaman kaybı günümüzdeki çok hızlı işlemciler için, fazla önemli olmayabilir. Bu işlem çok yüksek iterasyon sayısı olan döngülerin içeriğinde gerçekleştirilmek isteniyorsa, o vakit biçimlendirilmek istenen verinin orijinal olarak, doğrudan bir sayısal nesne sınıfı örneği olarak,

t = new Number(364.58359648);
		

şeklinde tanımlanması daha doğru olacaktır. Yine de, bu durum ancak çok yüksek sayıda iterasyonun gerçekleştiği döngü sistemleri için bir anlamı taşıyabilir. Genel olarak, JavaScript yorumlayıcısı bu gibi uyarlamaları çok verimli olarak gerçekleştirir ve kullanıcının hissedebileceği bir performans kaybı yaşanmaz. Gerçek uygulamalarda, denemeler yapılarak, bir gecikme hissediliyorsa, gereken önlemler alınabilir. Normal olarak, bu gibi uyarlama işlemlerinin hissedilebilir bir gecikme yaratmaması gerekir.

6.4.6 - Number Nesne Sınıfı Prototipinin toExponential() Metodu

Bu metodun amacı, içeriği sayıların üstel sayı görüntüsü şeklinde biçimlenmiş bir karakter dizigisi verisinin döndürülmesidir. Metodun kullanılışı,

		this.toExponential([ondalık sayısı]);
		

şeklindedir. Burada,

ondalık sayısı isteğe bağlı bir tamsayısı değerdir. Eğer ondalık sayısı hiç belirtilmemiş veya undefined ise, bu durumda ondalık sayısı, this değerinin uygun bir şekilde görüntülenebilmesi için gereken ondalık sayısına uyarlanır. Eğer ondalık sayısı 0<ondalık sayısı>20 sınırının dışında ise bir RangeError istisnası fırlatılır. Birçok belge çözümleyiciler bu durumda programı bir uyarı mesajı ile durdurabilirler.

this Değeri, bir sayısal nesne örneğidir, fakat bir sayısal ilkel değer de olabilir. Bu durumda yaşanabilecek performans kaybı, bölüm 6.4.5 de açıklanmıştır.

Eğer this değeri NaN ise, metot geriye, içeriği "NaN" olan bir karakter dizgisi verisi döndürür. Birçok belge çözümleyiciler bunu bir hata olarak kabul ederek programı bir hata mesajı ile durdurabilirler.

toExponential() Metodunun argüman sayısını belirten içsel length değeri 1 dir. Bu durumda, metot sadece bir argüman ile kullanılacak, varsa daha fazlası gözardı edilecektir.

toExponential() Metodu this değerinin ondalık noktasından önce tek bir sayı ve belirtildiği kadar ondalık sayısı şeklinde, üstel bir sayı içeriği olan bir karakter dizgisi veri döndürür. Orijinal verinin değer ve tipi, metodun uygulanmasından etkilenmez. Bu konuda bir uygulama sayfasında çalışan JavaScript programı ve verdiği sonuç, aşağıda görülmektedir:

...
var t =75.4578468;
sonuçVeTipYaz('t.toExponential(3) = ', t.toExponential(3), 'b6.4.6-uyg-1-sonuç-1');
...
		

Program Sonucu :

6.4.7 - Number Nesne Sınıfı Prototipinin toPrecision() Metodu

Bu metodun amacı, sayıların biçimlenmesi için JavaScript yorumlayıcısına daha fazla seçenek sağlamaktır. Kullanımı,

		this.toPrecision([duyarlık]);
		

şeklindedir. Burada,

duyarlık isteğe bağlı bir tamsayısı değerdir. Eğer duyarlık hiç belirtilmemiş veya undefined ise, bu durumda this değeri doğrudan doğruya bir karakter dizigisi verisine dönüştürülerek geri döndürülür. Eğer ondalık sayısı 1<duyarlık>21 sınırının dışında ise bir RangeError istisnası fırlatılır. Birçok belge çözümleyiciler bu durumda, programı bir uyarı mesajı ile durdurabilirler.

this Değeri, bir sayısal nesne örneğidir, fakat bir sayısal ilkel değer de olabilir. Bu durumda yaşanabilecek performans kaybı, bölüm 6.4.5 de açıklanmıştır.

Eğer this değeri NaN ise, metot geriye, içeriği "NaN" olan bir karakter dizgisi verisi döndürür. Birçok belge çözümleyiciler bunu bir hata olarak kabul ederek programı bir hata mesajı ile durdurabilirler.

toPrecision() Metodunun argüman sayısını belirten içsel length değeri 1 dir. Bu durumda, metot sadece bir argüman ile kullanılacak, varsa daha fazlası gözardı edilecektir.

toPrecision() Metodu this değerinin ondalık noktasından önce tek bir sayı ve duyarlık-1 kadar ondalık sayısı şeklinde, üstel bir sayı içeriği olan veya sabit notasyonda duyarlık kadar sayı şeklinde içeriği olan bir karakter dizgisi veri döndürür. Orijinal verinin değer ve tipi, metodun uygulanmasından etkilenmez. Bu konuda bir uygulama sayfasında çalışan JavaScript programı ve verdiği sonuç, aşağıda görülmektedir:

...
 var t = 448.3567457854;
sonuçVeTipYaz('t.toPrecision(4) = ', t.toPrecision(4), 'b6.4.7-uyg-1-sonuç-1');
...
		

Program Sonucu :

Yukarıda görülen uygulama sonuçlarından, sayıların yuvarlatıldığı görülmektedir.

6.5 - Number Nesne Sınıfı Örnekleri

Bu konunun başlangıcındaki 6.2 de açıklandığı gibi, sayısal sınıf nesne örneklerinin veri tipi object, içsel [Class]] özellikleri "Number", içsel [[Prototype]] özelliğinin değeri de yine "Number" sınıfı prototip nesnesinin güncel değeri olarak açıklanmıştır. Bu durumda, sayısal sınıf nesne örneklerinin yapısı, Number sınıfının güncel yapısıdır ve ek bir özellik içermemektedir.

sayısal sınıf nesne örneklerinin başlangıç içsel [[Value]]değeri, Number () yapılandırıcı fonksiyonunun argümanına bağlı olan bir ilkel sayısal değer karşılığıdır. Bu nedenle, sayısal nesne sınıfı örnekleri, çağrıldıklarında, aynı ilkel sayısal değerler gibi sayısal karşılıkları ile yanıt verirler ve sayısal ilkel değerlerle aynı amaçlarla kullanılabilirler. Fakat genel olarak JavaScript programlarında tüm ilkel veriler ilkel değerler halinde kullanılır ve aşırı bir gereksinme olmazsa, ilkel verilerin karşılığı olan öntanımlı nesne örnekleri olarak kullanılmaz.

6.6 - Number() Fonksiyonu

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

Sonuç = Number(Veri);
		

şeklindedir. Bu fonksiyon geriye bir sayısal 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ı toNumber 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 6.6 -1 de verilmiştir.

Tablo 6.6 -1 - toNumber Operatörü
Veri Tipi Sonuç
undefined NaN
null +0
Mantıksal Eğer veri true ise +1 false ise +0
Sayısal Sayıya dönüştürebilirse sonuç yoksa NaN
Sözel Boş bir karakter dizgisi için false diğer değerler için true
Nesne Önce ilkel değere sonra sayısal değere çevrilir.

Bu konudaki bir uygulama sayfasına bağlı JavaScript Programı, aşağıda görülmektedir:

...

var veri = new Number(448.3567457854), yeniVeri  = null;
			
yeniVeri = Number(veri);
			
sonuçVeTipYaz('yeniVeri = ', yeniVeri, 'b6.6-uyg-1-sonuç-1');
			
...
		

Program Sonucu :

Program Sonucu :

Tablo 6.6-1 deki dönüşüm sonuçlarının denenmesi için en iyi yöntemlerden biri, eval() makrolarını çalıştırabilen JavaScriptDeneme programı olabilir. Bu program kullanılarak 6.6-1 tablosundaki tüm dönüşüm sonuçları denenebilir.

Sayısal değere dönüştürülebilen sözel tipte verilerin veya sözel nesne sınıfı örneklerinin veya sayısal nesne sınıfı örneklerinin sayısal ilkel değerlere dönüştürülmesi için, Number() metodu çok sık kullanılan yararlı bir yöntemdir.

Valid XHTML 1.1