2017-11-09 8 views
0

私は名前空間を作成していますが、名前空間内からのみアクセスできるように名前空間変数へのアクセシビリティをどのように制限できるのでしょうか。名前空間変数を "private"に設定する

私のサンプルコードではPrivateExecprivateとし、名前空間の外部からアクセスできないようにします。

var demo = { 
    a: "demo", 
    b: { 
     PrivateExec: function() { 
      //execute 
     }, 
     ExecA: function() { 
      PrivateExec(); 
     }, 
     ExecB: function() { 
      PrivateExec(); 
     } 
    } 
} 

demo.ExecA(); //success 
demo.PrivateExec(); //fails because of private 
+2

可能な重複私は非常に読んでお勧めします(https://stackoverflow.com/questions/22156326/private-properties-in-javascript-es6-classes) –

+1

" ES6以前の場合は「JavaScriptデザインパターンの学習」(https://addyosmani.com/resources/essentialjsdesignpatterns/book/)を参照してください。プライベートメソッドの例については、「モジュール」パターンを参照してください。 –

+0

*なぜ*プライベートである必要がありますか? –

答えて

-2

このコードを使用しないでください。変数はプライベートにする必要があります。

var value = Symbol(); 
class MyClass { 
    constructor(){ 
     this[value] = "this is a test string"; 
    } 
} 

var call = new MyClass(); 

console.log(call.value); // should be undefined 
[JavaScriptをES6クラスでプライベートプロパティ]の
+0

1. - 2.それは一種のプライベートです。うん、 'call.value'は未定義です。なぜなのかご存知ですか? - それがプライベートなので! @JaredSmith – Jonas0000

+0

'call [value]'はあなたに文字列を与えます。 'Object.getOwnPropertySymbols(call)'はあなたにまだ文字列を返します。プライベートではありません。 –

+0

ここで@JaredSmithに同意する必要があります。適切な私的なもの(「外の世界からアクセスできない」という意味)を持つ唯一の方法は、スコープで遊ぶことです。 – sp00m

関連する問題