我想将一个回调函数(包含参数)传递给一个对象,并确保使用特定的参数值调用它。我想这样做,这些值也不需要传入。这可能吗?
以下是我正在尝试做的一个(无法使用的)示例:
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 {]
答案 0 :(得分:1)
this.object = new Object(function() { this.callback(val) }.bind(this));
这将绑定范围,以便this
正确引用。