Javascript 使用同一关键字直接调用方法或设置值
我想创建一个类,在这个类中,我可以使用相同的关键字调用方法或在类中设置变量。我有点不认为这是可能的,但如果有一个办法,或任何周围的工作,请分享。下面是一个示例代码Javascript 使用同一关键字直接调用方法或设置值,javascript,Javascript,我想创建一个类,在这个类中,我可以使用相同的关键字调用方法或在类中设置变量。我有点不认为这是可能的,但如果有一个办法,或任何周围的工作,请分享。下面是一个示例代码 class myClass { text(text) { this.innerText = text; } } let a = new myClass(); //I want this to work a.text(2); //I also want this to work a.text = 2; 你的直觉是
class myClass {
text(text) {
this.innerText = text;
}
}
let a = new myClass();
//I want this to work
a.text(2);
//I also want this to work
a.text = 2;
你的直觉是正确的。因为类上只能有一个名为
text
的元素,所以它可以是函数或属性。你不能两全其美。如上所述分配a.text=2
将覆盖a
的text
函数定义
如果您不知道,可以创建一个属性text
,其设置方式与函数的设置方式相同:
class myClass {
get text() { return this.innerText; }
set text(val) { this.innerText = val; }
}
从技术上讲,你可以做到这一点,但要想收回价值,必须走另一条路:
类测试{
某物=1;
布景(x){
这个,某物=x;
}
拿东西{
返回函数(x){this.something=x;};
}
得到支票{
归还这个东西;
}
};
设a=新试验;
控制台日志(a.check);
a、 stuff=2;
控制台日志(a.check);
a、 材料(3);
控制台日志(a.check);
console.log(“--”);
console.log(“a.stuff:+a.stuff”)
在哪里声明了innerText
?我确信可以同时让a.text(2)
和a.text=2
工作,但您肯定无法使用a.text
读取值2
,只有a.text()
可以工作。但问题是你为什么要这么做?因为这将打破对对象将/应该如何工作的任何预期,因此会严重损害可维护性。
let a = new myClass();
a.text = 'test';
console.log(a.innerText) // -> 'test'