通常当我们使用CALayers
时,它会引用该类。
但在这种情况下,this
为this
,我如何让dataChannel
再次引用this
?感谢
VideoService
答案 0 :(得分:5)
您可以使用bind
。
setupPeerConnection() {
this.dataChannel.onopen = this.dataChannelStateChanged.bind(this);
}
bind
创建一个函数的副本,其中指定的对象设置为this
。
答案 1 :(得分:4)
使用Function.prototype.bind明确绑定上下文:
export class VideoService {
dataChannel:any;
setupPeerConnection() {
this.dataChannel.onopen = this.dataChannelStateChanged.bind(this);
}
dataChannelStateChanged() {
console.log(this);
}
}
或使用arrow function来保留词汇范围:
export class VideoService {
dataChannel:any;
setupPeerConnection() {
this.dataChannel.onopen = () => this.dataChannelStateChanged();
}
dataChannelStateChanged() {
console.log(this);
}
}