Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
推理及;JavaScript bind()函数的用例?_Javascript - Fatal编程技术网

推理及;JavaScript bind()函数的用例?

推理及;JavaScript bind()函数的用例?,javascript,Javascript,在探索一些新的JavaScript内容时,我想知道JavaScriptbind函数背后的原因是什么 我理解它的作用(为这个传递一个上下文),但我真的不知道什么时候使用它 我试着浏览我的一些项目,找到bind可以让事情变得更优雅的部分,但唯一接近的是这一部分(backbone.js代码): 如果没有bind,对fetch的调用将如下所示: albums.fetch({ success: function() { albums.trigger('fetched-okay');

在探索一些新的JavaScript内容时,我想知道JavaScript
bind
函数背后的原因是什么

我理解它的作用(为
这个
传递一个上下文),但我真的不知道什么时候使用它

我试着浏览我的一些项目,找到
bind
可以让事情变得更优雅的部分,但唯一接近的是这一部分(backbone.js代码):

如果没有
bind
,对
fetch
的调用将如下所示:

albums.fetch({
    success: function() {
        albums.trigger('fetched-okay');
    },
});
我想有人会说第一个例子可能比第二个例子更容易理解,尽管我不相信;-)


那么bind函数的一些实际用例是什么呢?对我来说,它似乎是一个真正特殊的利基函数。

是的,如果您已经有了一个类似于
相册的变量可以在函数中使用,那么就没有理由使用
bind

但是,
bind
是有用的a)当您想
bind(this)
b)当要绑定的函数使用了
this
并且您对此无能为力时

那么一会儿

function() {
    this.trigger('fetched-okay');
}.bind(albums)
几乎没有什么用处,可以用

albums.trigger.bind(albums, 'fetched-okay');

trigger
方法本身是直接绑定的,我们根本不使用任何函数表达式。

如果没有
bind
,您认为
这个
函数在
成功
中的价值是什么?@thefourtheye实际上我认为它已经是
相册
,而是一个简单的
控制台.log(这个)
准确返回
未定义的
。默认情况下,
将是
未定义的
(在严格模式下)或全局对象。因此,要显式绑定
albums
对象,您需要使用
Function.prototype.bind
albums.trigger.bind(albums, 'fetched-okay');