gpt4 book ai didi

backbone.js - Backbone.js "on"函数中上下文(最后一个参数)的默认值是多少?

转载 作者:行者123 更新时间:2023-12-02 05:20:11 24 4
gpt4 key购买 nike

我永远无法真正弄清楚 backbone.js 的 .on() 函数中的第三个参数的作用(应该是上下文):

this.model.on('change', this.doStuff, context); 

根据:Backbone.js on(), what does the last this refer to?好像里面设置了this的值有人可以举例说明该上下文应该是什么吗?我通常在没有上下文的情况下使用 on,它似乎引用了 View this,但有时它引用了其他内容(我无法弄清楚)。

那么Backbone默认设置context的逻辑是什么?什么时候您会希望 this 不引用 View ?有没有办法让它始终引用 View 而不指定 this 作为上下文参数?

最佳答案

如果您查看 on source你会看到默认的 context 是什么:

on: function(name, callback, context) {
//...
events.push({callback: callback, context: context, ctx: context || this});
//...
},

所以默认的 context 是调用 on 的对象: ctx: context ||这个。所以如果你只是说:

model.on('event', this.callback);

然后 this 将在 callback 被调用时成为 model 。如果您希望 this 成为 View ,那么您可以这样说:

// Inside a view...
model.on('event', this.callback, this);

或者您使用 _.bindcallback 设为绑定(bind)函数, _.bindAll , Function#bind , $.proxy

为什么要指定上下文?好吧,在作为 View 方法的回调中,您可能希望 this 成为 View ,而 on 无法知道 View 是什么,当您call on:您无法展开堆栈来找出调用链上游的this 是什么,即使可以,您也不知道在哪里停止。所以在 x.on(...) 中使用 x 是唯一合理的默认设置,如果你想要其他东西,你可以很容易地这样说。

关于backbone.js - Backbone.js "on"函数中上下文(最后一个参数)的默认值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13995471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com