本頁の目次 目次 次頁: 15-8_The_Math_Object 前頁: 15-6_Boolean_Objects
コンストラクタではなく関数として呼出される Number は、型変換を行う。
value が供給されれば ToNumber(value) により算出した (Number オブジェクトではなく) 数値を返し、供給されなければ +0 を返す。
new
式の一部として呼出される Number はコンストラクタである: 新規に生成したオブジェクトを初期化する。
新規に構築されたオブジェクトの [[Prototype]] プロパティは、 Number.prototype (セクション 15.7.3.1) の初期値である、オリジナルの Number プロトタイプオブジェクトに設定される。
新規に構築されたオブジェクトの [[Class]] プロパティは、 "Number" に設定される。
新規に構築されたオブジェクトの [[Value]] プロパティは、 value が供給されるならば ToNumber(value) に、そうでなければ +0 に設定される。
Number コンストラクタの内部 [[Prototype]] プロパティの値は、 Function プロトタイプオブジェクト (セクション 15.3.4) である。
内部プロパティと length プロパティ (値は 1) の他に、 Number コンストラクタは次のプロパティを持つ:
Number.prototype の初期値は Number プロトタイプオブジェクト (セクション 15.7.4) である。
このプロパティは、属性 { DontEnum, DontDelete, ReadOnly } である。
Number.MAX_VALUE の値は、Number 型の正の有限数の最大値であり、おおよそ 1.7976931348623157 × 10308 である、
このプロパティは、属性{ DontEnum, DontDelete, ReadOnly } を持つ。
Number.MIN_VALUE の値は Number 型の正の最小値であり、おおよそ 5 × 10-324.
このプロパティは、属性 { DontEnum, DontDelete, ReadOnly } である。
Number.NaN の値は NaN である。
このプロパティは、属性 { DontEnum, DontDelete, ReadOnly } である。
Number.NEGATIVE_INFINITY の値は、 -∞ である。
このプロパティは、属性 { DontEnum, DontDelete, ReadOnly } である。
Number.POSITIVE_INFINITY の値は、 +∞ である。
このプロパティは、属性 { DontEnum, DontDelete, ReadOnly } である。
Number プロトタイプオブジェクト は、それ自身 値が +0 の Number オブジェクト ([[Class]] が "Number") である。
Number プロトタイプオブジェクトの内部 [[Prototype]] プロパティの値は、 Object プロトタイプオブジェクト (セクション 15.2.3.1) である。
以降、 Number プロトタイプオブジェクトのプロパティである関数の説明において、フレーズ "この Number オブジェクト" は、関数の呼出しにとっての this
値であるオブジェクトを参照する; this
値がオブジェクトではなく、内部 [[Class]] プロパティの値が "Number" ならば、例外 TypeError が投げられる。 また、フレーズ "この数値" は、この Number オブジェクトであらわされる数値、つまり、この Number object の内部 [[Value]] プロパティの値を参照する。
Number.prototype.constructor の初期値は、組込み Number コンストラクタである。
radix が数 10 または undefined ならば、この数値は引数として ToString 演算子に与えられる; 結果の文字列値が返される。
radix が 2 から 36 の整数で、 10 でないならば、結果は文字列で、実装依存の選択となる。
toString
関数は汎用的ではない; this
値が Number オブジェクトでなければ、例外 TypeError を投げる。それゆえ、他の種類のオブジェクトにメソッドとして転用できない。
ホスト環境の現在のロケールの慣習に沿って整形される Number の値を表す文字列値を生成する。この関数は実装依存で、 toString と同じものを返すことを許可されているが推奨もされない。
NOTE この関数の第一パラメータは、この標準の将来のバージョンで使用される可能性がある; 実装はこのパラメータを他の用途に使用しないことを推奨する。
この数値を返す。
valueOf
関数は汎用的ではない; this
値が Number オブジェクトでなければ、例外 TypeError を投げる。それゆえ、他の種類のオブジェクトにメソッドとして転用できない。
小数点の後の fractionDigits 個の数字にって数を固定点表記 (fixed-point notation) する文字列を返す。 fractionDigits が undefined ならば、 0 が仮定される。 具体的には、次のステップを実行する:
toFixed
メソッドの length プロパティは 1 である。
toFixed
メソッドが、 2 個以上の引数で呼出されるならば、振る舞いは未定義である (セクション 15 参照)。
実装は、 0 未満や 20 より大きい fractionDigits の値に対する toFixed
の振る舞いの拡張を許可される。この場合、 toFixed
はそのような値に対し RangeError を投げる必要はない。
NOTE toFixed
の出力は、値によっては toString より正確でよく、それは toString が隣接した数値から数を区別するのに十分な桁数を出力するだけだからである。例えば、 (1000000000000000128).toFixed
(0) が "1000000000000000128" を返す一方で、 (1000000000000000128).toString() は "1000000000000000100" を返す。
1 個の数字、小数点、 fractionDigits 個の数字によって数を指数表記する文字列を返す。 fractionDigits が undefined ならば、数を一意に特定するのに必要とするのと同じ桁数を含む (この場合、数が指数表記で常に出力される点を除き ToString に似ている)。 具体的には、次のステップを実行する:
toExponential
メソッドの length プロパティは 1 である。
toExponential
メソッドが 2 個以上の引数で呼出されるならば、その振る舞いは未定義である (セクション 15 参照)。
実装は、 fractionDigits が 0 より小さい場合、また 20 より大きい場合の toExponential
の振る舞いの拡張を許可される。この場合 toExponential
はその値に例外 RangeError を投げる必要はない。
NOTE 上記の規則の要求よりもより精密な取り決めを提供する実装については、ステップ 19 の次の代替バージョンをガイドラインとして用いることを推奨する:
e, n, f を、 f ≥ 0, 10f ≤ n < 10f+1, n × 10e-f の数値が x, かつ, 可能な限り小さい f であるような整数とする。複数の n が存在可能であれば、 n × 10e-f が x の値に最も近いような n の値を選択する。可能な n の値が 2 個あれば、偶数である方を選択する。
1 個の数字、小数点、 precision-1 個の数字による指数表記、または precision 桁の数字による固定点表記の一方であらわされる数を含む文字列を返す。 precision が undefined ならば、代わりに ToString (セクション 9.8.1) を呼出す。具体的には、次のステップを実行する:
toPrecision
メソッドの length プロパティは 1 である。
toPrecision
メソッドが 2 個以上の引数で呼出されるならば、その振る舞いは未定義である (セクション 15 参照)。
実装は、 precision の値が 0 より小さい場合、また 21 より大きい場合の toPrecision
の振る舞いの拡張を許可される。この場合 toPrecision
はその値に例外 RangeError を投げる必要はない。
Number インスタンスは、Number プロトタイプオブジェクトから継承するプロパティの上に特にプロパティを持たない。