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
但是当我谷歌号码()时,它被列为一个函数。
有趣的是,当我反转我的代码时,它会抛出一个错误。
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));
答案 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语言中的函数。由于它未定义为方法,因此在调用时不会将其作为一个方法调用。