简短说明:我使用OO的Javascript函数的声明,新的关键字,和原型方法(下面的例子)。 我需要一种方法来对对象的每个方法中引用的“自我”对象。 “这个”似乎如果我直接调用方法才有效,否则“这”似乎是指什么叫做替代方法。
更多细节:这是我对象的一个简化版本。
function Peer(id) {
this.id = id;
this.pc = new RTCPeerConnection(SERVER);
this.pc.onevent1 = this.onEvent1;
this.pc.onevent2 = this.onEvent2;
}
Peer.prototype.doSomething = function() {
// create offer takes one param, a callback function
this.pc.createOffer(this.myCallback);
};
Peer.prototype.onEvent1 = function(evt) {
// here this refers to the RTCPeerConnection object, so this doesn't work
this.initSomething(evt.data);
};
Peer.prototype.myCallback = function(data) {
// here this refers to the window object, so this doesn't work
this.setSomething = data;
};
Peer.prototype.initSomething = function(data) {
// use data
};
这里是一个样本使用它。
var peer = new Peer(1);
peer.doSomething();
// eventually something triggers event1
我试图简化代码,尽可能和注释说明问题。 我创建的这一个本地副本,使回调PARAM调用我需要使用我的本地的这个副本功能的匿名函数创建一个解决方法的第一个方案(调用this.myCallback)。 但第二种情况是比较麻烦的(事件触发)。
我很好奇,如果有一个面向对象的程序设计,其中每个方法总是有一个适当的参考父对象,不管是如何调用该方法的不同模式? 或者,如果有一种不同的方式来创建一个对象作为自定义对象的属性和约束其活动到自定义对象的方法? 很抱歉,如果这是令人困惑的语言! 请注意,我的问题无关与RTCPeerConnection,那正好是我目前工作的项目。
我发现这篇文章: http://www.alistapart.com/articles/getoutbindingsituations ,但我不完全知道如何使用这些信息?