例如我有
class MyClass {
constructor() {
this.myMethod = this.myMethod.bind(this);
// ... some more code
// return what?
}
myMethod() {
this.myMethod2();
// do stuff ...
}
myMethod2() {
// do stuff 2 ...
}
}
然后我会做这样的事情
let obj = new MyClass();
我想做的是myMethod
从obj
obj.myMethod();
显然,如果在其代码中myMethod
调用其他MyClass
方法(如myMethod2
),我希望一切都能按预期工作。因此,我假定构造函数应返回某种对象并包括其公共方法(可以访问对象的私有方法),但是该怎么做呢?
在ES6类中拥有私有方法的唯一方法(据我所知)是将它们定义为构造函数的内部函数:
class MyClass {
constructor() {
let privateVar = 'foo';
let privateMethod = () => {
return privateVar;
}
}
}
在构造函数之外定义的任何方法都是隐式公共的。
可以访问私有变量或方法的唯一公共方法是在构造函数的词法范围内类似定义的方法,并作为以下属性附加到当前实例this
:
constructor() {
let privateVar = 'foo';
let privateMethod = () => {
return privateVar;
}
this.publicMethod = () => {
return privateMethod();
}
}
(请注意,使用箭头功能意味着this
Insidethis.publicMethod
始终指向当前实例,而无需.bind
调用)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句