簡體   English   中英

了解JavaScript中的Number函數

[英]Understanding Number functions in JavaScript

我正在閱讀Mozilla開發人員網絡上的JavaScript Number對象。 我是新來的。 下面是我的腳本:

var number = 16;
console.log( Number.prototype.toExponential(number) );
console.log( Number.prototype.toFixed(number) );
console.log( Number.prototype.toPrecision(number) );
// DON'T UNDERSTAND WHAT THIS DOES
// console.log( Number.prototype.toSource(number) );
console.log( Number.prototype.valueOf(number) );  

和輸出:

0.0000000000000000e+0 
0.0000000000000000 
0.000000000000000 
0   

我想知道為什么盡管number = 16卻得到全零。 請幫助我理解這一點。 :)

你必須有:

var number = 16;
console.log(number.toExponential());
console.log(number.toFixed());
console.log(number.toPrecision());

使用原型,您可以定義自己的對象的方法和屬性

原型基本上擴展了對象

這是一個簡單的原型示例:

Number.prototype.isPrime = function() {
    if ( this === 0 || this === 1 ) {
        return false;
    }
    for ( var i = 2; i < this; i++ ) {
        if ( this % i === 0 ) {
            return false;
        }
    }
    return true;
};

var arr = [2,4,5,13,15,121];

for ( var i = 0; i < arr.length; i++ ) {
    console.log(arr[i].isPrime());
}

在此示例中, this關鍵字引用數字對象(因此您不必在函數中傳遞任何參數來進行操作)

JSFIDDLE

看看原型

Number.prototype功能住上實際數字(原型為特定類型的定義。字符串變量有住在String.prototype函數,數組對Array.prototype等定義的函數http://javascript.crockford.com /prototypal.html是學習原型繼承的一個很好的起點),因此只需調用number.toFixed()number.toFixed()等。您甚至可以執行(16).toString()等。

您通過調用原型函數而不是“ on 16”來調用函數“ no on”。

如果您執行以下操作,將會獲得更好的運氣:

var number = new Number(16);
console.log(number.toExponential());
console.log(number.toFixed());
console.log(number.toPrecision());
console.log(number.valueOf());

注意*最好不要以這種方式在javascript中使用數字,除非您有特殊的需要避免使用基元。

之所以得到0,是因為Number原型如果未實例化,則默認為零。

Number是一個原型,在語義上被設計為用於生成繼承這些方法的新對象。 這些方法的設計目的不是直接從Number原型中調用,而是從數字本身中調用。 請嘗試以下操作:

(16).toExponential();

您必須將數字包裝在括號中,以便解釋器知道您正在訪問方法而不是定義浮點。

這里要了解的重要一點是, Number原型提供了所有數字將在javascript中繼承的所有方法。

為了進一步解釋為什么得到0,Number原型上的方法旨在“綁定”到數字對象。 他們將使用綁定對象進行輸入,並將忽略任何參數。 由於它們綁定到默認的Number對象,因此默認數字為0,因此所有方法都將返回其版本0。

在javascript中,有一種方法可以使用“調用”方法將方法重新綁定到對象(還有綁定和應用方法):

Number.prototype.toExponential.call(16);

嘗試這個:

var number = 16;
console.log( Number.prototype.toExponential.call(number) );

注意call() ,該方法在實例上調用Number對象的toExponential方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM