是否可以将相同的上下文应用于多个函数?
Is it possible to apply the same context to many functions?
有没有办法将相同的 'this' 上下文绑定到不同的函数?
var obj = {'a':1, 'b':2 };
init.call(obj);
function init()
{
func1.call(this);
func2.call(this);
func3.call(this);
etc...
}
首选语法:
function init()
{
// each function should use this.
func1();
func2();
func3();
etc...
}
本身不是真正的问题,只是语法糖和DRY;提前致谢。
编辑:感谢 Barmar,我想到了这个:
[ func1, func2, etc... ].forEach( function(func){ func.call(this); }.bind(this));
您可以编写一个函数来执行此操作:
function callAll() {
var funcArray = Array.prototype.slice.call(arguments);
for (var i = 0; i < funcArray.length; i++) {
funcArray[i].call(this);
}
}
那么你可以这样做:
callAll.call(obj, func1, func2, func3);
有没有办法将相同的 'this' 上下文绑定到不同的函数?
var obj = {'a':1, 'b':2 };
init.call(obj);
function init()
{
func1.call(this);
func2.call(this);
func3.call(this);
etc...
}
首选语法:
function init()
{
// each function should use this.
func1();
func2();
func3();
etc...
}
本身不是真正的问题,只是语法糖和DRY;提前致谢。
编辑:感谢 Barmar,我想到了这个:
[ func1, func2, etc... ].forEach( function(func){ func.call(this); }.bind(this));
您可以编写一个函数来执行此操作:
function callAll() {
var funcArray = Array.prototype.slice.call(arguments);
for (var i = 0; i < funcArray.length; i++) {
funcArray[i].call(this);
}
}
那么你可以这样做:
callAll.call(obj, func1, func2, func3);