Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
理解JavaScript中的数字函数_Javascript - Fatal编程技术网

理解JavaScript中的数字函数

理解JavaScript中的数字函数,javascript,Javascript,我在Mozilla开发者网络上读到关于JavaScript数字对象的文章。我是新来的。以下是我的脚本: 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

我在Mozilla开发者网络上读到关于JavaScript数字对象的文章。我是新来的。以下是我的脚本:

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   
我想知道为什么我得到了所有的零,尽管数字=16。请帮助我理解这一点

你必须有:

var number = 16;
console.log(number.toExponential());
console.log(number.toFixed());
console.log(number.toPrecision());
使用prototype,您可以定义自己的方法和对象属性

原型基本上扩展了对象

以下是原型的一个简单示例:

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());
}
在本例中,该关键字引用number对象,所以您不必在函数中传递任何参数进行操作

看看

你必须具备:

var number = 16;
console.log(number.toExponential());
console.log(number.toFixed());
console.log(number.toPrecision());
使用prototype,您可以定义自己的方法和对象属性

原型基本上扩展了对象

以下是原型的一个简单示例:

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());
}
在本例中,该关键字引用number对象,所以您不必在函数中传递任何参数进行操作


看看数字。原型函数依赖于实际数字原型是特定类型的定义。字符串变量有活在String.prototype上的函数,数组有在Array.prototype上定义的函数,等等。这是学习原型继承的好起点,所以只需调用number.toFixed、number.toFixed等。您甚至可以执行16.toString等


通过调用prototype函数,而不是在16上调用函数,可以不使用任何函数。

数字。prototype函数以实际数字为基础。prototype是特定类型的定义。字符串变量有活在String.prototype上的函数,数组有在Array.prototype上定义的函数,等等。这是学习原型继承的好起点,所以只需调用number.toFixed、number.toFixed等。您甚至可以执行16.toString等

通过调用原型函数而不是在16上调用函数,您是在不使用任何内容的情况下调用函数。

尝试以下操作:

var number = 16;
console.log( Number.prototype.toExponential.call(number) );
请注意调用实例上Number对象的方法表示的调用。

尝试以下操作:

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

请注意调用实例上Number对象的方法表示的调用。

如果执行以下操作,您的运气会更好:

var number = new Number(16);
console.log(number.toExponential());
console.log(number.toFixed());
console.log(number.toPrecision());
console.log(number.valueOf());
(16).toExponential();
注意*最好不要以这种方式在javascript中使用数字,除非您特别需要避免使用原语

得到0的原因是,如果没有实例化,则数字原型默认为零

Number是一个原型,它在语义上被设计用于生成继承这些方法的新对象。这些方法不是直接从数字原型调用的,而是从数字本身调用的。请尝试以下操作:

var number = new Number(16);
console.log(number.toExponential());
console.log(number.toFixed());
console.log(number.toPrecision());
console.log(number.valueOf());
(16).toExponential();
您必须将数字括在括号中,以便解释器知道您正在访问方法,而不是定义浮点

这里需要理解的重要一点是,数字原型提供了所有数字将在javascript中继承的所有方法

为了进一步解释获得0的原因,数字原型上的方法旨在绑定到数字对象。它们将使用绑定对象作为输入,并将忽略任何参数。由于它们被绑定到默认数字对象,默认数字为0,因此所有方法都将返回其版本0

javascript中有一种方法可以使用call方法将方法重新绑定到对象。还有bind和apply:

Number.prototype.toExponential.call(16);

如果您执行以下操作,您的运气会更好:

var number = new Number(16);
console.log(number.toExponential());
console.log(number.toFixed());
console.log(number.toPrecision());
console.log(number.valueOf());
(16).toExponential();
注意*最好不要以这种方式在javascript中使用数字,除非您特别需要避免使用原语

得到0的原因是,如果没有实例化,则数字原型默认为零

Number是一个原型,它在语义上被设计用于生成继承这些方法的新对象。这些方法不是直接从数字原型调用的,而是从数字本身调用的。请尝试以下操作:

var number = new Number(16);
console.log(number.toExponential());
console.log(number.toFixed());
console.log(number.toPrecision());
console.log(number.valueOf());
(16).toExponential();
您必须将数字括在括号中,以便解释器知道您正在访问方法,而不是定义浮点

这里需要理解的重要一点是,数字原型提供了所有数字将在javascript中继承的所有方法

为了进一步解释获得0的原因,数字原型上的方法旨在绑定到数字对象。它们将使用绑定对象作为输入,并将忽略任何参数。由于它们被绑定到默认数字对象,默认数字为0,因此所有方法都将返回其版本0

javascript中有一种方法可以使用call方法将方法重新绑定到对象。还有bind和apply:

Number.prototype.toExponential.call(16);

请向我解释一下.prototype的概念:我以前从未见过它:它是面向对象javascript的整个基础…=对象具有由原型定义的类型,实例共享所有原型函数。

你肯定想读一些类似JavaScript的东西:让自己熟悉JavaScript工作原理的核心的好部分=到目前为止,我学到的是如何使用JavaScript,而不是工作原理。就像我说的,我对这件事还不熟悉。你有什么好书推荐吗我用一个有用的链接更新了答案,如果你正在学习的话,Crockford关于JavaScript的其余部分通常也值得一读JavaScript@LittleChild看看我的示例请向我解释一下.prototype的概念:我以前从未见过它:它是面向对象javascript的整个基础…=对象具有由原型定义的类型,实例共享所有原型函数。你肯定想读一些类似JavaScript的东西:让自己熟悉JavaScript工作原理的核心的好部分=到目前为止,我学到的是如何使用JavaScript,而不是工作原理。就像我说的,我对这件事还不熟悉。你有什么好书推荐吗我用一个有用的链接更新了答案,如果你正在学习的话,Crockford关于JavaScript的其余部分通常也值得一读JavaScript@LittleChild请看我的示例,但请不要在现实生活中更改主机对象。@phylax这是什么意思?:主机对象包括数字、数组、字符串。。。改变他们的行为被认为是不好的做法。在这里阅读更多:@phylax:这些不是宿主对象,在现实生活中,扩展它们的原型可能很有用。不同的人对这件事有不同的看法,但这本身并没有什么问题。更具情境性。@phylax-Like cookie monster说我看不出这有什么问题,不管怎样,我只是展示了一个原型如何工作的示例,但请不要在现实生活中更改主机对象。@phylax这是什么意思?:主机对象包括数字、数组、字符串。。。改变他们的行为被认为是不好的做法。在这里阅读更多:@phylax:这些不是宿主对象,在现实生活中,扩展它们的原型可能很有用。不同的人对这件事有不同的看法,但这本身并没有什么问题。“这更具情境性。”phylax-Like cookie monster说,我看不出这有什么问题,不管怎样,我只是举了一个例子说明原型是如何工作的——你不应该提倡使用新数字。一些经验不足的开发人员可能会意识到这一点,并在以后遇到各种各样的问题。不过,我喜欢剩下的答案:我只是用它来演示数字原型是如何实例化的。当然,我也提供了访问相关方法的原始方法。但是,如果我可以问,为什么不赞成使用新数字?主要是因为它使比较不一致。例如,新数字16==新数字16为假。新数字0<新数字16为真。使用对象而不是原语值的副作用。你不应该提倡使用新数字。一些经验不足的开发人员可能会意识到这一点,并在以后遇到各种各样的问题。不过,我喜欢剩下的答案:我只是用它来演示数字原型是如何实例化的。当然,我也提供了访问相关方法的原始方法。但是,如果我可以问,为什么不赞成使用新数字?主要是因为它使比较不一致。例如,新数字16==新数字16为假。新数字0<新数字16为真。使用对象而不是原始值的副作用。