我该怎么做才能引用函数中的类?

时间:2016-03-08 18:38:40

标签: javascript typescript angular webrtc

通常当我们使用CALayers时,它会引用该类。

但在这种情况下,thisthis,我如何让dataChannel再次引用this?感谢

VideoService

2 个答案:

答案 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); 
    }
}