我正在阅读Mozilla Developer Network上的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
得到全零。 请帮助我理解这一点。:)
答案 0 :(得分:3)
你必须:
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
关键字引用数字对象(因此您不必在函数中传递任何参数以进行操作)
答案 1 :(得分:2)
Number.prototype函数存在于实际数字上(原型是特定类型的定义。字符串变量具有生活在String.prototype上的函数,数组具有在Array.prototype上定义的函数,等等。http://javascript.crockford.com/prototypal.html是这是一个了解原型继承的良好起点),所以只需致电number.toFixed()
,number.toFixed()
等等。您甚至可以(16).toString()
等。
你通过调用原型函数而不是“16”来调用函数“无所事事”。
答案 2 :(得分:2)
如果您执行以下操作,您将获得更好的运气:
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 原型中调用,而是从数字本身调用。请尝试以下方法:
(16).toExponential();
您必须将数字包装在括号中,以便解释器知道您正在访问方法而不是定义浮点。
要理解的重要一点是 Number原型提供了所有数字将在javascript中继承的所有方法。
为了进一步解释为什么你得到0,数字原型上的方法是&#34;绑定&#34;到一个数字对象。他们将使用绑定对象进行输入,并忽略任何参数。由于它们绑定到默认的Number对象,因此默认编号为0,因此所有方法都将返回其版本0。
javascript中有一种方法可以使用&#34; call&#34;将方法重新绑定到对象。方法(还有绑定和应用):
Number.prototype.toExponential.call(16);
答案 3 :(得分:1)
试试这个:
var number = 16;
console.log( Number.prototype.toExponential.call(number) );
注意call()
调用实例上toExponential
对象的方法Number
。