2012-03-20 14 views
0

Javascriptクラスでプライベート属性を作成する方法を知りたい。私はこれを試みた:プライベート属性にアクセスするJavascript OOP

function Class1(selector) 
{ 
    //calling the constructor 
    Constructor(); 

    //private attribute 
    var $container = null; 

    function Constructor() 
    { 
     $container = $(selector); 

     //Shows that container is an object 
     alert($container); 
    } 

    function Foo() 
    { 
     //Shows that container is null 
     alert($container); 
    } 

    result { 
     Foo : Foo 
    }; 
} 

私は、 "コンストラクタ"で新しい変数$ containerを作成し、それにオブジェクトを割り当てると仮定しました。私は、オブジェクトコンストラクタのローカル変数ではなく、オブジェクトの属性$ containerに値を代入する方法を知りたいと思います。赤など

http://jsfiddle.net/R8RG5/

+1

'$コンテナ= $(セレクタ)をデバッグするためconsole.logを使用するより良い練習です;'あなたが 'Constructor' *編集を呼び出すことはありません思われることはなく、行います。 *最初の行を逃した、ええ、ステートメントは間違った順序です。つまり、私はこのように視認性をエミュレートする大きなファンではありません。 IMOを使用すると、コードが複雑すぎ、柔軟性に欠けます。むしろあなたのコードを適切に文書化してください。 –

+1

ちょうどそれを見つけました...私は変数を作成する前にコンストラクターメソッドを呼び出します。つまり、関数内にオブジェクトを作成し、オブジェクトのオブジェクトを作成した後に関数を作成します。 – maniak

+0

@Felix Klingコードを明確にすると思います。スクリプトが処理する関数を自分のプライベートに設定し、残りの部分を公開するように設定するだけで、ユーザーはそれを参照できます。最良の解決策ではないかもしれませんが、それは機能し、すべてのコモン関数が再集計されて以来、編集が簡単になると思います。 – maniak

答えて

1

これはあなたの最初の呼び出しConstructor()で、その後、あなたはnull

$containerに割り当てますすでに述べた-X:コンテナ変数の初期化後にコンストラクタを実行する必要があります。私の例では

..

+0

はい私はそれを見つけました...自分の質問で解決するための質問を設定できませんでしたが、私が見つけた解決策に答えてから、あなたの答えは受け入れられるとマークします。 – maniak

0
function Class1(selector) { 

    var container = null; //private attribute 
    constructor(); //calling the constructor 

    function constructor() { 
     container = $(selector); 
     console.log($container); //Shows that container is an object 
    } 

    function foo() { 
     console.log(container); //Shows that container is null 
    } 

    result { Foo : foo }; 
} 

:あなたは周りのことを切り替える場合は、望ましい結果を得るでしょう

+0

クラス名に小文字を使用する方が実際的ではないと思います。私はいつも授業のために大文字を使い、言われました。 Javaを見ると、クラスStringでも大文字で始まります。 – maniak

+0

@maniak "関数名"はクラス名ではなく、クラス名を修正しました:) – mrzmyr

+0

lol ok!しかし、まだあなたのスタイルに依存していると思っています。私はC++でビデオゲームプログラミングの書籍をたくさん赤字にしていて、その多くは大文字で関数を書いています。私はそれがより良い練習を考慮しているとは思わないが、ちょうど2つの異なるスタイル。 – maniak

関連する問題