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页面有一些代码可以在所有浏览器中使用.