&引用;点函数“;JavaScript中的运算符

&引用;点函数“;JavaScript中的运算符,javascript,arrays,function,methods,prototype,Javascript,Arrays,Function,Methods,Prototype,我是js的新手,所以请对我温柔:) 我想了解在哪里可以对某个变量使用点运算符(在本例中为数组),以及何时不能。 考虑下面的代码: //example 1 function f1(x) { return x*x; } console.log(map(f1, [1,2,3,4,5])); console.log([1,2,3,4,5].map(f1)); //example 2 function f2(arr) { return arr; } console.log(f2([1,2

我是js的新手,所以请对我温柔:)

我想了解在哪里可以对某个变量使用点运算符(在本例中为数组),以及何时不能。 考虑下面的代码:

//example 1
function f1(x) {
    return x*x;
}
console.log(map(f1, [1,2,3,4,5]));
console.log([1,2,3,4,5].map(f1));

//example 2
function f2(arr) {
    return arr;
}
console.log(f2([1,2,3,4,5]));
console.log([1,2,3,4,5].f2());
我知道示例有很大不同,但在示例1中,即使使用
array.function(..)
语法,两种打印都可以工作(并且打印相同),而在示例2中,第二种打印会产生错误。 基本上,这两者之间的区别是什么?为什么它只在示例1中起作用


一般来说,我可以在不同的变量类型(数字、布尔值等)上应用此方法吗?

[1,2,3,4,5]
是数组“class”的一个实例,而“class”有方法,这就是为什么下面的代码是有效的:

[1,2,3,4,5].map(f1)
[1,2,3,4,5].f2()
map
方法可以接受任何函数作为参数,并且您正在传入
f1
函数。它将在
map
函数中执行,并作为独立函数执行

数组“class”没有
f2
方法,这就是为什么这是无效代码的原因:

[1,2,3,4,5].map(f1)
[1,2,3,4,5].f2()

这里,
f2
立即执行,是
[1,2,3,4,5]
对象的一部分。在第一种情况下,
map
被定义为
数组的全局函数公共函数。因此,您可以通过
map(arr)
arr.map(…)


在第二种情况下,因为您只将f2定义为全局函数,这意味着数组无法访问它。

在第一个示例中,您正在使用该函数

此函数可以通过两种不同的方式调用(参见文档)

第二个示例不起作用,因为类
Array
没有名为
f2()

的函数来完成其他答案: