Number()和toUpperCase()函数之间的区别

时间:2017-06-25 17:14:48

标签: javascript

Number()和toUpperCase()看起来都像函数,但它们不能以相同的方式编写。我必须错过一个明显的概念,但我不知道它是什么。

例如,以下代码完美无缺。

var a = "cat";
var b = "dog";
console.log(a.toUpperCase() + b.toUpperCase());

结果是CATDOG。

但是这段代码会抛出错误。

var a = 5;
var b = 10;
console.log(a.Number() + b.Number());

a.Number is not a function

但是当我谷歌号码()时,它被列为一个函数。

JavaScript Number() Function

有趣的是,当我反转我的代码时,它会抛出一个错误。

a = "cat";
b = "dog";

console.log(toUpperCase(a) + toUpperCase(b));

toUpperCase is not defined

Number()反转也可以正常工作。

a = 5;
b = 10;

console.log(Number(a) + Number(b));

3 个答案:

答案 0 :(得分:1)

您应该阅读有关OOP(面向对象编程)的内容。

是的,Number是一个函数,但a.Number(意为int.Number)不是。当您编写a.Number()时,您正在调用对象Number的函数a并且由于integer数据类型(a变量)而无法正常工作没有这样的功能。

编辑:(这通常是关于OOP,而不是特定于JavaScript的)

Number函数是全局函数,它是任何编程/脚本的基础。它被定义在某处,您可以在其他地方调用它。另外,你可以传递参数,它可以返回一些值。例如:

function getHigherNumber(num) {
    return num + 1;
}

var foo = 5;
console.log(getHigherNumber(foo)); // writes "6"

函数getHigherNumber将一个数字作为参数,并将其返回一个。

然后有方法,它们不是全局的,而只与定义它们的数据类型/类相关联。例如string.toUpperCase()。在这里,"字符串"是一种原始数据类型,它也定义了一些方法(即toUpperCase)。然后创建一个对象var bar = "some text";并在其上调用方法:bar.toUpperCase()注意对象及其调用方法之间的点.

希望你现在能够更好地理解它,如果我的一些解释不完全准确,那就很抱歉。

答案 1 :(得分:1)

正如您在发布的链接中所看到的,它指的是函数而不是方法。 您可以在提供它的对象上使用方法。

例如:

toUpperCase是一种方法,因为它是在String.prototype中提供的。所以你可以在

中使用
"Prova".toUppercase();

因为"Prova"从String.prototype

继承了该方法

toFixed是一种方法,因为它在Number.prototype中提供。所以你可以这样使用

var x = 9.656;
x.toFixed(0);   

函数看起来像代码块的简单定义:

function myUpperCase(myString) {
   return myString.toUpperCase(myString);
}

然后,在您的代码中,您可以这样使用它:

myUpperCase("cat");

答案 2 :(得分:1)

String.prototype.toUpperCase();

是作为方法内置到字符串原型中的函数。因此,使用以下语法调用它:

String.toUpperCase();

另一方面,

Number();

是一种本地内置于JavaScript语言中的函数。由于它未定义为方法,因此在调用时不会将其作为一个方法调用。