0

やあみんな私はjavascriptのプロトタイプを使い始めたばかりで、それが可能かどうか疑問に思っていました.可能であれば、メソッド内で関数を呼び出す方法など:

obj = function(test){
this.test=test;
}

obj.prototype.a = function(){
    var x = this.test;

    function b(){
        alert(x);
    }

    function c(){
    console.log(x);
    }
}

var foo = new obj();
foo.a.b();

それで、私は呼び出すことなくfunction b内部にアクセスできますか?obj.afunction cabc

これらを の外部の別々のメソッドに入れることができることは知ってaいますが、質問したいと思いました。

乾杯。

4

2 に答える 2

2

b宣言されている無名関数にスコープされます。その関数を変更して公開することなく、その関数の外部からアクセスする方法はありません。

aこれはオブジェクト プロトタイプのプロパティであるため、呼び出すことができます(スコープ変数には格納されません)。bそしてcまったく露出していません。あなたがコードを書いた方法は、人々が通常 JavaScript でプライベート メソッドを作成する方法です。

于 2013-07-07T11:46:18.087 に答える
1

それを可能にするためにコードを少し変更することもできますが、あなたが本当に望んでいるのはx、外部から b を呼び出したときに値を取得できることだと思います...私は正しいですか?

おそらくa、それ自体で別のインスタンスを作成することを検討しましたか? あなたのコードは、これを価値のあるものにするのに十分なほど自明ではないと思います...

于 2013-07-07T11:52:36.257 に答える