Mil*_*uzz 3 javascript oop callback this
我有一个功能:
myObject.myFunction = function(callback){
callback();
}
Run Code Online (Sandbox Code Playgroud)
和一个回调
randomObject.callBack = function(){
console.log(this);
}
Run Code Online (Sandbox Code Playgroud)
如果我randomObject.callBack()直接调用,我在控制台中获取父对象.但是,如果我调用myObject.myFunction(randomObject.callBack)它,它会记录一个DOM元素.
如何访问父对象?
注意
我不知道运行时之前回调父对象的名称.
对象的上下文(即this值)在函数运行时确定,而不是在定义时确定.传递randomObject.callBack给另一个函数不会发送上下文(该randomObject位); 它只是发送功能.
大概是在myFunction调用它时设置上下文.由于您未明确提供上下文(例如with call或apply),因此上下文将成为window对象.
您可以通过在运行之前明确说明函数的上下文应该更改它.您可以使用以下bind方法执行此操作:
myObject.myFunction(randomObject.callBack.bind(randomObject))
Run Code Online (Sandbox Code Playgroud)
现在当你callback在里面打电话时myFunction,randomObject会被记录下来.
请注意,这bind是相对较新的; 并非所有浏览器都支持它.我上面链接的MDN页面有一些代码可以在所有浏览器中使用.
| 归档时间: |
|
| 查看次数: |
1676 次 |
| 最近记录: |