function func() {
return this == myObject;
}
var boundFunc = func.bind(myObject, "arg1", "arg2");
boundFunc("arg3", "arg4");
Function.prototype.bind = function() {
var fn = this;
var args = Array.prototype.slice.call(arguments);
var object = args.shift();
return function() {
var allArgs = args.concat(Array.prototype.slice.call(arguments))
return fn.apply(object, allArgs);
};
}
我需要一些上述代码段的帮助。我认为除了一件事我理解它。
我不明白这是怎么回事:
return function() {
var allArgs = args.concat(Array.prototype.slice.call(arguments))
return fn.apply(object, allArgs);
};
指的是:
boundFunc("arg3", "arg4");
我知道当调用bind时args
获取参数(myObject,arg1,arg2)。但我不明白return function()
如何引用boundfunc
以便将arg3
和arg4
与args
连接起来。那有意义吗?有人可以帮我解释一下这个问题吗?
答案 0 :(得分:0)
如果您反汇编代码会发生这种情况:
var boundFunc = function() {
var allArgs = ["arg1", "arg2"].concat([].slice.call(arguments))
return func.apply(myObject, allArgs);
};
保留.bind()
中的参数,并返回一个代理函数,它将使用前面的参数和在调用中传递的新参数的组合调用func
。