我不知道如何用语言来描述我想要实现的目标,但我可以用代码展示我想要的东西。
我想这样调用方法:
const test = new Vk('...');
test.messages.getDialogs();
test.status.set('...');
如何检查?是否做了这样的事情:
class Vk
{
constructor(token, version = 5.95)
{
this.token = token;
this.version = version;
this.messages = new VkMessages();
this.status = new VkStatus();
}
}
class VkMessages
{
getDialogs()
{
/* тут должно использоваться this.token, this.version взятое из класса Vk */
}
}
class VkStatus
{
set()
{
/* тут должно использоваться this.token, this.version взятое из класса Vk */
}
}
...或其他方式?
几乎。如果你运行你写的代码,你会得到一个错误,即调用堆栈已超出大小。这是为什么?很简单,因为 Vk 构造函数初始化了 VkMessages,而 VkMessages 又扩展了 Vk 类。因此,只要调用堆栈中有空间,就会一遍又一遍地执行Vk构造函数,当没有更多空间时,就会发生错误。
但是 VkMessages 根本不需要扩展 Vk 类,对吧?因此,我们对您的代码进行了微小的更改,我们得到了一个工作版本:
这是一个更完整的示例,其中
token和version被移动到一个单独的类,即程序上下文,并从Vkto传递VkMessages。