آموزش جاوا اسکریپت Java Script قسمت سیزدهم

1396/4/28 --- 4631

با سلام خدمت همه همراهان، کریمی هستم و با جلسه سیزدهم جاوااسکریپت در خدمت شما. اگر سوالی از جلسه قبل هست در گروه برنامه نویسان مطرح بفرمایید.

در این جلسه، به ادامه مبحث Standard built-in objects در جاوااسکریپت می پردازیم.

آبجکت Number

 یک شئ Number به شما اجازه میده که با مقادیر عددی کار کنید. یک شئ Number با استفاده از سازنده آن ایجاد میشه.

var num = new Number(123);

پراپرتی های Number:

Number.MAX_VALUE:

بزرگترین عدد مثبت قابل نمایش

Number.MIN_VALUE:

کوچکترین عدد مثبت قابل نمایش (نزدیکترین عدد مثبت به صفر اما صفر نیست)

Number.NaN:

مقدار خاص not a number

Number.NEGATIVE_INFINITY:

مقدار خاصی که نمایانگر منفی بینهایت است.

 

Number.POSITIVE_INFINITY:

مقدار خاصی که نمایانگر مثبت بینهایت است.

Number.prototype:

اجازه افزودن پراپرتی ها و متدهایی را به آبجکت Number میدهد.

نمونه های Number: (Number instances)

همه نمونه های Number از Number.prototype ارث بری میکنند. شئ prototype سازنده Number قابل تغیر است و این قابلیت رو دارد که همه نمونه های Number را تحت تاثیر قرار دهد.

متدهای موجود در Number.prototype:

Number.prototype.toExponential()

عدد را در قالب یک string و به صورت نمایی برمیگرداند.

var numObj = 77.1234;
console.log(numObj.toExponential());  // logs 7.71234e+1
console.log(numObj.toExponential(4)); // logs 7.7123e+1
console.log(numObj.toExponential(2)); // logs 7.71e+1
console.log(77.1234.toExponential()); // logs 7.71234e+1
console.log(77 .toExponential());     // logs 7.7e+1

Number.prototype.toFixed()

مقدار عددی را در قالب یک string و به صورت عدد اعشاری برمیگرداند.

var numObj = 12345.6789;
numObj.toFixed();       // Returns '12346': note rounding, no fractional part
numObj.toFixed(1);      // Returns '12345.7': note rounding
numObj.toFixed(6);      // Returns '12345.678900': note added zeros
(1.23e+20).toFixed(2);  // Returns '123000000000000000000.00'
(1.23e-10).toFixed(2);  // Returns '0.00'
2.34.toFixed(1);        // Returns '2.3'
-2.34.toFixed(1);       // Returns -2.3 (due to operator precedence, negative number literals don't return a string...)
(-2.34).toFixed(1);     // Returns '-2.3' (...unless you use parentheses)
Number.prototype.toLocaleString()

مقدار عددی را در قالب یک string و به فرمت زبان سیستم برمیگرداند. این متد، متد مربوط به Object را override میکند.

var number = 123456.789;
console.log(number.toLocaleString()); 
// Displays "123,456.789" if in U.S. English locale
// German uses comma as decimal separator and period for thousands
console.log(number.toLocaleString('de-DE'));
// → 123.456,789
// when requesting a language that may not be supported, such as
// Balinese, include a fallback language, in this case Indonesian
console.log(number.toLocaleString(['ban', 'id']));
// → 123.456,789
// request a currency format
console.log(number.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }));
// → 123.456,79 €
// limit to three significant digits
console.log(number.toLocaleString('en-IN', { maximumSignificantDigits: 3 }));
// → 1,23,000
Number.prototype.toPrecision()

مقدار عددی را در فرمت string و با دقت مورد نظر برمیگرداند.

var numObj = 5.123456;
console.log(numObj.toPrecision());    // logs 5.123456
console.log(numObj.toPrecision(5));   // logs 5.1235
console.log(numObj.toPrecision(2));   // logs 5.1
console.log(numObj.toPrecision(1));   // logs 5
// note that exponential notation might be returned in some circumstances
console.log((1234.5).toPrecision(2)); // logs 1.2e+3
Number.prototype.toString()

مقدار عددی را در قالب string برمیگرداند. این متد، متد مربوط به Object را override میکند.

var count = 10;
console.log(count.toString());    // displays '10'
console.log((17).toString());     // displays '17'
console.log((17.2).toString());   // displays '17.2'
var x = 6;
console.log(x.toString(2));       // displays '110'
console.log((254).toString(16));  // displays 'fe'

console.log((-10).toString(2));   // displays '-1010'
console.log((-0xff).toString(2)); // displays '-11111111'
Number.prototype.valueOf()

مقدار primitive (اولیه) این شئ را برمیگرداند.

var numObj = new Number(10);
console.log(typeof numObj); // object
var num = numObj.valueOf();
console.log(num);           // 10
console.log(typeof num);    // number

نکته: برای تبدیل یک رشته به عدد میتوان از روش های new Number(value) و parseInt یا parseFloat استفاده کرد. تفاوت ایجاد نمونه جدید (فراخوانی سازنده Number) با دو روش دیگر این است که در روش اول در صورتی که رشته به صورت یک عدد قابل قبول نباشد عملیات تبدیل امکان پذیر نیست، اما در روش دوم در صورتی که رشته با عدد آغاز شده باشد، تا جایی که امکان تبدیل وجود داشته باشد کاراکترها را به جلو میرود.

x = "10 20"
Number(x);        // returns NaN
parseInt(x);   // returns 10
parseFloat(x);   // returns 10

مثالی از افزودن یک متد به prototype:

در این مثال ما میخواهیم متدی را به prototype شئ Number اضافه کنیم که قادر باشد تعداد مشخصی 0 به قبل از عدد اضافه کند و آنرا در قالب یک رشته نمایش دهد.

Number.prototype.padLeftZero = function (digitCount){
    var numStr = this.toString();
    while (numStr.length < digitCount){
        numStr = "0" + numStr;
}    return numStr;
}

در هنگام فراخوانی این متد نیز به صورت زیر عمل میکنیم:

var x = 12;
x.padLeftZero(2);    // returns 0012

اشیاء بسیار دیگری از دسته Standard built-in objects وجود دارند از قبیل :

Array, Boolean, Date, Object,

که مطالعه اونها رو به خودتون واگذار میکنم، مراجعی که میتونم برای مطالعه معرفی کنم سایت http://w3schools.com و سایت http://developer.mozilla.org هستند.

 

اگر سوالی هست در گروه برنامه نویسان مطرح کنید.