我如何理解javascript内置函数的调用和绑定行为
我试图理解这个代码<代码>数组(8).填充(0).映射(Number.call,Number)。问题是,这种行为很难理解,因为无法看到数字的实现。如果您尝试使用.toString编号,它只会显示“本机代码”。对内置函数使用bind和call也是如此。我怎样才能知道这应该是怎样的呢?如果您想详细了解我如何理解javascript内置函数的调用和绑定行为,javascript,bind,Javascript,Bind,我试图理解这个代码数组(8).填充(0).映射(Number.call,Number)。问题是,这种行为很难理解,因为无法看到数字的实现。如果您尝试使用.toString编号,它只会显示“本机代码”。对内置函数使用bind和call也是如此。我怎样才能知道这应该是怎样的呢?如果您想详细了解Number的工作原理,请查看它的功能 如果您想知道Number通常是如何工作的,请查看它的 基本上,Number(value)所做的就是将value转换为数字类型。没有别的了 我相信要理解这段代码,您需要了解
Number
的工作原理,请查看它的功能
如果您想知道
Number
通常是如何工作的,请查看它的
基本上,Number(value)
所做的就是将value
转换为数字类型。没有别的了
我相信要理解这段代码,您需要了解的实际上是关于而不是Number
当我们将上面的代码翻译成一个不那么花哨的代码时,我们得到了大致如下的结果(这对于下面的解释很重要):
console.log(
数组(8).填充(0).映射(Function.prototype.call,Number)
);
你可以参考一下,我在哪里可以找到标准函数的等效JS植入?因此在.map(Number.call,Number)
中,Number.call中的Number
可以替换为任何函数名,这不会有什么区别,因为它只是访问。调用?@GirkovArpa是正确的。您可以编写数组(8).填充(0).映射(Boolean.call,Number)
,但仍然可以得到相同的结果result@yqlim为什么Number.call只是Function.prototype.call?我猜,当它计算Number.cal(val,index,arraystate)
时,它首先进入调用代码,调用代码执行类似于的操作。(val,index,arraystate)
,因为这是现在的Number
,它进入该调用。我真正想了解的是,在JavaScript中,您不仅可以根据函数的行为(输入输出)还可以根据函数的实现(如何使用)与函数进行交互,如果我想使用toString
来寻找实现,那么我得到的只是[本机代码]
--也感谢您的回复。@peterduffyNumber.call
是Function.prototype.call
,因为Number instanceof Function
是真的。.call
方法继承自函数
类。至于实现细节,不同的JS引擎有不同的实现,但它们都遵循我上面链接的方法,但是如果你真的感兴趣,你可以搜索开源引擎的代码。