Javascript - 如何确保使用特定参数调用回调?

时间:2016-03-15 20:53:47

标签: javascript callback parameter-passing

我想将一个回调函数(包含参数)传递给一个对象,并确保使用特定的参数值调用它。我想这样做,这些值也不需要传入。这可能吗?

以下是我正在尝试做的一个(无法使用的)示例:

this.object = new Object(callback(val)); //val is the value I'd like the object to use

回调可以是具有唯一参数的各种函数之一。因此,我不想单独传递值。

一个例子:

//Instances of the same object with different callbacks
this.object1 = new Object(callback(val1, val2));
this.object2 = new Object(callback(val));
this.object3 = new Object(callback(val1, val2, val3));

如您所见,传递其他参数是不可行的。

我可以像这样传递回调:

this.object = new Object( function() { this.callback.call(val) } );

...但是由于回调超出了Object的范围,它要求我传递对调用者的引用来访问它,或者以其他方式访问调用者。

我最好的行动方针是什么?

更新

我正在使用MenuSystem创建Buttons。根据给定的回调方法,每个Button的功能都不同 - 主要功能是点击事件。 MenuSystem中存在一个对象,它封装了按钮可能使用的所有不同功能(方法)。这些方法是作为按钮的回调传递的。如果Button修改了自己的属性,function.call()可能需要“拥有”该方法。这需要MenuSystem

TL; DR:

UIMethods有{UIElement + UIElement]

UIMethods.someMethod()出于功能目的使用[someMethod()]

UIElement可能会修改function.call()需要{ [Error: Cannot find module '../build/Release/bson'] code: 'MODULE_NOT_FOUND' } js-bson: Failed to load c++ bson extension, using pure JS version Seeding files from directory /Users/Antwisted/code/wdi/MEAN/seeds ---------------------- Seeding collection locations err = [SyntaxError: /Users/Antwisted/code/wdi/MEAN/seeds/locations.json: Unexpected token {]

的属性

1 个答案:

答案 0 :(得分:1)

this.object = new Object(function() { this.callback(val) }.bind(this));

这将绑定范围,以便this正确引用。