我认为要完全按照说明实现您的要求,您应该使用箭头函数,以便apiService.media
andapiService.message
对象没有自己的this
上下文阻碍。例如:
class ApiService {
constructor(public name: string) { }
private getMedia() {
console.log(this.name+" getMedia");
}
private uploadMedia() {
console.log(this.name+" uploadMedia");
}
private sendMassage() {
console.log(this.name+" sendMessage");
}
private recieveMessage() {
console.log(this.name+" receiveMessage");
}
// instance methods
public media = {
get: () => this.getMedia(),
upload: () => this.uploadMedia()
}
// instance methods
public message = {
send: () => this.sendMassage(),
receive: () => this.recieveMessage()
}
}
请注意,这意味着 的每个实例都ApiService
将拥有自己的函数值属性message.send
等副本。它们不会位于ApiService.prototype
类似的普通方法上。除非您生成许多ApiService
.
让我们确保它可以正常工作并正确绑定:
const api1 = new ApiService("One");
const api2 = new ApiService("Two");
api1.message.receive(); // One recieveMessage
api2.message.receive(); // Two receiveMessage
api1.media.get(); // One getMedia
api2.media.get(); // Two getMedia
看起来不错。希望有帮助;祝你好运!
链接到代码