[英]Making derived class method private to outside but reachable at baseclass in es6
這是我的簡化示例。
class BasePerson{
constructor(name){
this.name = name || "noname";
}
shout(){
var shoutMessage = this._talk() + "!!!!!";
console.log(shoutMessage);
}
}
class HappyPerson extends BasePerson{
constructor(name){
super(name);
this.message = "LA LA LA LA LA";
}
_talk(){
return this.message;
}
}
var person1 = new HappyPerson();
person1.shout(); //LA LA LA LA LA!!!!!
person1._talk(); //returns LA LA LA LA LA but I want _talk to be undefined
我要實現的是,在獲取HappyPerson的實例時將_talk方法設為私有,但僅在BasePerson類上可以實現。 如何在es6中實現這一目標?
似乎您嘗試實現一種抽象方法(因為您希望父方法在子方法上調用它的實現,即使您希望將方法從子類中隱藏,這很奇怪)。 如果這正是您想要的,則可以將_talk函數作為回調傳遞給喊父母的函數。 並非完全相同的解決方案,但它很干凈,並且可以將所有內容保密,如下所示:
class BasePerson{
constructor(name){
this.name = name || "noname";
}
shout(talkFn){
var shoutMessage = talkFn() + "!!!!!";
console.log(shoutMessage);
}
}
class HappyPerson extends BasePerson{
constructor(name){
super(name);
this.message = "LA LA LA LA LA";
}
shout(){
super.shout(()=>this.message);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.