将函数绑定到此函数的更简洁的方法
Cleaner way to bind a function to this?
我有很多代码可以执行以下操作来将回调绑定到this
:
someMethod: function()
{
this.doSomething({
callback: function(a,b,c)
{
console.log(a);
console.log(this.title);
}.bind(this),
otherData: [1,2,3,4],
anotherOption: true
});
}
title:'test',
我希望这更具可读性,并封装我如何绑定到它 - 通过函数调用或类似的东西......类似于以下伪代码的东西(我知道它不起作用(:
someMethod: function()
{
this.doSomething({
callback: this.bind(a,b,c)
{
console.log(a);
console.log(this.title);
},
otherData: [1,2,3,4],
anotherOption: true
});
},
title:'test',
有没有办法将回调绑定到这个更易读的回调上?请注意,我上面的例子是简化的 - 通常我可能会传入 2 个回调,以及其他选项。
就个人而言,我会创建回调方法然后分配它,我发现阅读起来不那么痛苦,如果需要,它还会给您留下函数的引用,这在将bind
与事件处理程序一起使用时很有用例如(可以添加/删除它们(,因为bind
返回一个函数。
someMethod: function() {
var callback = function(a,b,c) {
console.log(a);
console.log(this.title);
}.bind(this);
this.doSomething({
callback: callback
});
},
title:'test',
您也根本无法使用bind
并且像许多JS方法一样,它采用一个参数,这是回调的范围,因此基本上只是向对象scope: this
添加新属性。理想情况下,回调应该使用将范围作为第一个参数的call
运行。
怎么样:
someMethod : function ()
{
var that = this;
this.doSomething({
callback : function (a,b,c) {
console.log(a);
console.log(that);
}
});
}
无论如何,如果您每次都创建一个新函数,则无需.bind
。局部变量在这里更合适。
我认为你也可以使用这样的东西:
//...
someMethod: function() {
this.doSomething({
boundTo: this, //<= here
callback: function(a,b,c) {
console.log(a);
console.log(this.boundTo.title); //<= and here
},
otherData: [1,2,3,4],
anotherOption: true
})
}
// ...
或者这个(关闭(也应该有效
someMethod: function() {
this.doSomething({
callback: function(self) {
return function(a,b,c) {
console.log(a);
console.log(self.title);
};
}(this),
otherData: [1,2,3,4],
anotherOption: true
});
}
相关文章:
- 如何确保函数/方法参数为certian类型
- Javascript中对象中的函数方法
- Object.assign(),函数方法和内存使用
- 我应该在原型上还是在新创建的实例上调用构造函数方法
- Angular promise回调不是在构造函数方法内部触发,而是在对象文本方法中触发
- 如何使用 Karma、Jasmine 和 Istanbul 指定测试应涵盖哪些函数/方法
- 在ES2015中定义一个类,构造函数方法是什么以及为什么它是必不可少的
- 如何调用通过它传递不同 ID 的函数方法
- Sencha ExtJs 为什么从“构造函数”方法返回“this”
- 这个 JavaScript 函数方法调用了什么
- 如何在 javascript 中从子原型调用父类的构造函数方法
- 是否仍可访问被覆盖的函数/方法
- 在构造函数之外更改 JavaScript 中的构造函数方法
- 这种实例化构造函数方法的风格是什么
- 如何在 JavaScript 中使用继承与构造函数方法一起使用 返回具有私有属性的对象文本
- 我的javascript构造函数方法以文本形式返回整个方法,而不是预期的返回值
- 如何在事件中将变量传递给构造函数方法
- 如何限制用户在ui ace编辑器中只能编写一个javascript函数(方法)
- 打印任何java应用程序的函数/方法调用序列
- 如何在jQuery语句中使用Javascript构造函数方法