2017-04-05 7 views
0

このJavaScriptクラスでサウンドプロパティが正しく非公開になる方法はありますか?さらに、どのようにしてクラス外でアクセスすることができますか?私はビデオでこれを見て、クラス外の音のプロパティにアクセスしようとしましたができませんでした。JavaScriptクラス以外のクラスプロパティにアクセスする方法

class Dog { 
    constructor() { 
    this.sound = 'woof'; 
    } 
    talk() { 
    console.log(this.sound); 
    } 
} 

ありがとう!!

答えて

0

newを使用してクラスのインスタンスを作成する必要があります。あなたがクラスのインスタンスを持っていないとき、コンストラクタはまだ実行されていないので、まだサウンドプロパティはありません。

var foo = new Dog(); 
console.log(foo.sound); 

または

これはそれの新しいインスタンスを作成することなく、Dogクラスにデフォルトプロパティを割り当てます。

Dog.__proto__.sound = 'woof'; 
console.log(Dog.sound); 
3

クラスのインスタンスを作成した後に外部からアクセスできるため、プライベートではありません。あなたのクラスのインスタンスを作成する必要が

class Dog { 
 
    constructor() { 
 
    this.sound = 'woof'; 
 
    } 
 
    talk() { 
 
    console.log(this.sound); 
 
    } 
 
} 
 

 
let dog = new Dog(); 
 
console.log(dog.sound); // <-- 
 

 
// To further drive the point home, check out 
 
// what happens when we change it 
 
dog.sound = 'Meow?'; 
 
dog.talk();

+0

パーフェクト!ありがとうございました。 – Steez

+0

@Steez Glad私は助けることができる:) –

0

class Dog { 
 
    constructor() { 
 
    this.sound = 'woof'; 
 
    } 
 
    talk() { 
 
    console.log(this.sound); 
 
    } 
 
} 
 

 
console.log(new Dog().sound);