Javascript 如何在对象中调用该类?
我有一个类Javascript 如何在对象中调用该类?,javascript,node.js,Javascript,Node.js,我有一个类testClass,在testClass中有一个名为testGetter的getter和一个名为testObject的公共对象。在testObject中,我有一个函数nestedFunction,它试图调用testGetter,但无法调用,因为这个的作用域在testObject中。如何从对象调用getter(或任何函数) class testClass { get testGetter() { return "test" }
testClass
,在testClass
中有一个名为testGetter
的getter和一个名为testObject
的公共对象。在testObject
中,我有一个函数nestedFunction
,它试图调用testGetter
,但无法调用,因为这个
的作用域在testObject
中。如何从对象调用getter(或任何函数)
class testClass {
get testGetter() {
return "test"
}
testObject = {
nestedFunction : function(){
console.log(this)
return this.testGetter
}
}
constructor()
{
console.log(this.testObject.nestedFunction())
}
}
new testClass()
输出:
{ nestedFunction: [Function: nestedFunction] }
undefined
箭头函数的经典用例
class测试类{
获取testGetter(){
返回“测试”
}
testObject={
嵌套函数:()=>{
console.log(这个)
返回这个.testGetter
}
}
构造函数(){
console.log(this.testObject.nestedFunction())
}
}
new testClass()
为什么不为该testObject使用类?至于为什么这个
是未定义的:因为这个对象“只是一个具有适当功能的对象文字”,不是您使用新建…
创建的对象类型的实例-但最重要的是:您编写此代码的真正原因是什么?因为几乎可以肯定的是,如果这是您实际打算使用的代码,您正在解决一个有点可疑的代码问题,SO上的人肯定能帮你弄清楚正确的代码是什么样子。@Mike'Pomax'Kamermans他想让它成为它所包含的testClass
对象。@Mike'Pomax'Kamermans谢谢你的回答,我完全诚实,我不知道你能做到。你能链接一些文档或者关于这个问题的另一个堆栈溢出问题吗?我不能,因为那只是基本的JS类代码:class testClass{constructor(){this.testObject=new whateverclassthatthauldbe();}
。另外,请注意get testGetter()
误解了get
的工作原理:它创建了一个可以作为属性调用的函数(在本例中是const t=new TestClass();const x=t.testGetter
)如果你只是简单地定义了一个类函数,你就不需要添加get
,你想把它作为一个函数调用。啊,我明白你的意思了,我没有想过!关于get的事情,我理解get
,但是如果我删除定义中的paren,它会抛出一个错误Hi Lakshya,谢谢你的快速回答。Cou你能解释一下为什么闭包在这种情况下有效而不是在经典函数中有效吗?我不明白为什么有效,如果你能提供多一点,我会接受的insight@NicoNekoru阅读TLDR;箭头函数捕获此,传统函数不会。Barmar感谢您提供的链接和简明解释!普通函数ons在它们自己的上下文中执行,因此它们有自己的“this”,而arrow函数接受它们的外部函数(在本例中为testClass)的作用域。查看这两个函数之间的详细差异: