繁体   English   中英

在JS中的函数的绑定方法上调用bind方法

[英]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方法bindthis ,这不是一个函数。 您需要将其绑定到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM