0
var foo = (function(){

    var _blah;

    function doStuff(){
        //how to make _blah instance specific
        //and access it here?
    }

    function bar(blah){
        _blah = blah;
        doStuff();
        //this.blah = blah?
    }

    bar.prototype.getBlah = function(){ return _blah; };

    return bar;

})();

var foos = [];

$.each([1,2,3], function(i, v){
    var f = new foo(v);
    foos.push(f);
});

//all instances of foo
//gets _blah set to 3
console.log(foos[1].getBlah()); 

上記のモジュールに関して 2 つの質問があります。

  • 各インスタンスに固有のプロパティを設定するにはどうすればよいですか? 上書きされることがわかり_blahますが、これは明らかです。しかし、構文について助けが必要です。私の推測では、コメントのようにコンストラクターで設定する必要があります。それは正しい方法ですか?
  • 別のメソッドでプロパティにアクセスするにはどうすればよいですか? 私の知る限り、thisを参照しwindowdoStuff()ください。

http://jsfiddle.net/ncg2M/1/

4

1 に答える 1

2

各インスタンスに固有のプロパティを設定するにはどうすればよいですか? これで、_blah が上書きされることがわかります。これは明らかです。しかし、構文について助けが必要です。私の推測では、コメントのようにコンストラクターで設定する必要があります。それは正しい方法ですか?

はい。を使用するのが正しい方法ですthis.blah = // valueが、もちろん、これにより、変数がblah制限なしにパブリックにアクセスできるようになります。

別のメソッドでプロパティにアクセスするにはどうすればよいですか? 私の知る限り、これは doStuff() のウィンドウを指します。

doStuff()モジュラー内でそのような関数を定義すると、通常、他のインスタンスメソッドによって使用されるユーティリティ関数になるため、メソッドはあまり意味がありません。

于 2013-11-01T14:21:03.773 に答える