在理解函数的参数是如何解析对象时,我提出了一个问题。
我分析的代码是:
function foo(something) {
console.log(something); // outputs 3
return this.a + something;
}
function bind(fn, obj) {
return function () {
return fn.apply(obj, arguments);
};
}
var obj = {
a: 2
};
var bar = bind(foo, obj);
var b = bar(3, 5, 6);函数foo控制台记录其名为“The”的参数,该参数应该是参数对象。为什么我只通过了第一个对撞机而忽略了其他参数呢?我想我应该把所有的论点都拿出来。
发布于 2017-10-09 13:39:53
使用.apply(),将所有参数作为数组传递。这意味着,如果您的函数具有两个参数,如:
functionWithTwo(a,b) {}可以使用两个值的数组传递参数:
[1,3]如果您现在传递一个包含两个以上字段的数组,则其他字段将被忽略,因为目标函数只接受两个参数。
这就是在你的例子中所发生的事情。将数组3、5、6传递给只接受1参数(某物)的函数。因此,只有第一个值,3,是存在的。
https://stackoverflow.com/questions/46647773
复制相似问题