[英]Calling bind method on bind method of a function in JS
出于好奇,我想使用这种特殊方法来复制具有预设参数的函数:
var x = function (p1,p2) {
console.log(this, p1, p2);
};
var y = x.bind.bind(this,this,1,2);
y();
因此,由于函数的“绑定”方法本身就是函数,因此它具有“绑定”方法,而此“绑定”方法又具有另一个“绑定”方法,依此类推...
但是,当我在Google Chrome浏览器中运行代码时,
未捕获的TypeError:必须在函数上调用Bind
所以看起来bind不是一个函数而是
typeof x.bind;
退货
功能
因此,我试图了解bind方法的真正类型!
那是个错误吗?
您正在将bind
方法bind
到this
,这不是一个函数。 您需要将其绑定到x
,这是您将在其上使用bind
的实际函数:
var x = function(p1,p2) {
console.log(this, p1, p2);
};
var y = x.bind.bind(x);
var z = y(this, 1, 2); // this call is like `x.bind(this, 1, 2)` now
z();
bind
将返回绑定到第一个参数指定的上下文的前一个函数定义。 所以y = x.bind.bind(this,this)
将返回绑定到this
的绑定函数定义,最终就像y = bind(this)
,它将引发您看到的异常。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.