如何在回调函数中调用继承的函数

时间:2015-07-21 09:49:34

标签: javascript jquery inheritance callback peerjs

我有一个简单的问题。我正在与peerjs进行视频聊天,我得到函数未定义的错误。这是代码:

主构造函数是Voip,在其他文件中调用,如

var voip = new Voip(); 

这是功能:

function Voip(options) {
var self = this;

options = options ||  {};

var allOptions = _.extend({
secure: true,
debug: 3
}, options);

this.peerjs = new Peer(allOptions);

第一个问题在这里。如何在回调函数中调用otherCall并调用call事件函数otherCall位于底部。现在它是用this.otherCall编写的,但这不起作用。每当我收到呼叫事件并接听电话时,我只想转到此功能。

this.peerjs.on('call', function(call){
call.answer(window.localStream);
this.otherCall(call);
  });
}

然后通过继承EventEmitter来扩展Voip。我可以完全摆脱这条线并保持相同的功能吗?我根本不使用EventEmitter,但在我帮助过的代码中使用过。

Voip.prototype = _.extend(EventEmitter.prototype, {

同样在这里,self.otherCall不起作用。解决办法是什么?

callOther: function(receiverId) {
var self = this;
var call = self.peerjs.call(receiverId, window.localStream);
self.otherCall(call);
},

otherCall: function(call) {

if (window.existingCall) {
    window.existingCall.close();
  }

call.on('stream', function(stream){
$('iframe').putthecodein....(stream)
  });
  window.existingCall = call;
}
});

希望我的问题清楚。如果我总结一下,我想在调用call事件时调用函数otherCall,第二次调用callOther函数。并且为了继承EventEmitter,我想知道我是否可以修改代码,以至于我不需要该行,一切仍然有效。

1 个答案:

答案 0 :(得分:2)

像这样使用。它可能会奏效。

var self = this;

self.peerjs.on('call', function(call){
    call.answer(window.localStream);
    self.otherCall.call(self, call);
});