class A{
constructor(name){
this[name] = name ; //to be private so i need this
new B(this);
}
getName(){
return this[name];
}
}
class B(){
constructor(a){
a.getName()// I wants to be like this
}
}
我只是想在不创建新实例的情况下调用方法。
答案 0 :(得分:1)
如果要在类中创建私有数据,请使用WeakMap或闭包。 this[name]
根本不是私有的,它对任何有权访问实例化对象的东西都是完全可见的。
另一个问题是,对于return this[name];
,getName
函数的范围内没有name
变量。
此外,在实例化对象本身之前,无法访问对象的类方法。
你可能想要这样的东西:
const A = (() => {
const internals = new WeakMap();
return class A {
constructor(name) {
internals.set(this, { name });
}
getName() {
return internals.get(this).name;
}
}
})();
class B {
constructor(a) {
console.log(a.getName())
}
}
const a = new A('bob');
const b = new B(a);