我想创建一个类,可以在其中使用相同的关键字调用方法或在类中设置变量。我不太可能,但是如果有办法,或者有其他解决方法,请分享。这是示例代码。
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;
答案 0 :(得分:1)
从技术上讲,您可以做到这一点,但是要想重新获得价值,就必须走另一条路:
class Test {
something=1;
set stuff(x){
this.something=x;
}
get stuff(){
return function(x){this.something=x;};
}
get check(){
return this.something;
}
};
let a=new Test;
console.log(a.check);
a.stuff=2;
console.log(a.check);
a.stuff(3);
console.log(a.check);
console.log("---");
console.log("a.stuff: "+a.stuff);
因为这里
因此getter和setter都将字段设置在(something
)后面,因此“真正”读取它需要其他名称(此处为check
)。
答案 1 :(得分:0)
您的直觉是正确的。因为在类上只能有一个称为text
的元素,所以它可以是一个函数或一个属性。您不能同时拥有这两种方式。如上所述,分配a.text = 2
将覆盖a
的{{1}}函数定义。
如果您不知道,可以通过创建text
属性的方式来创建属性text
:
innerText
class myClass {
get text() { return this.innerText; }
set text(val) { this.innerText = val; }
}