如何从匿名函数访问对象实例

我正在处理以下情况。

我必须使用类中的方法,但我也必须调用callback…查看代码,我已经创build了_this var,因为我不知道如何从匿名函数内访问DeviceAnalyzer实例。 ..

有另一种方法吗? 我觉得我这样做是一种讨厌的哈哈

 DeviceAnalyzer.prototype.pingProcess = function(deviceInfo, callback) { var _this = this; netutils.ping(host.ipAddress, function(isAlive) { deviceInfo.isAlive = isAlive _this.emit('device', deviceInfo); callback(null, deviceInfo); }); }; 

使用ES6和匿名函数,您不必设置或绑定它。

 DeviceAnalyzer.prototype.pingProcess = function(deviceInfo, callback) { netutils.ping(host.ipAddress, (isAlive) => { deviceInfo.isAlive = isAlive this.emit('device', deviceInfo); callback(null, deviceInfo); }); }; 

与IIFE

 DeviceAnalyzer.prototype.pingProcess = function(deviceInfo, callback) { (function (that) { return netutils.ping(host.ipAddress, function(isAlive) { deviceInfo.isAlive = isAlive that.emit('device', deviceInfo); callback(null, deviceInfo); }))(this); }; 

上面的方法很好。

另一种方法是使用绑定

 DeviceAnalyzer.prototype.pingProcess = function(deviceInfo, callback) { netutils.ping(host.ipAddress, function(isAlive) { deviceInfo.isAlive = isAlive this.emit('device', deviceInfo); callback(null, deviceInfo); }.bind(this)); };