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()); 

关于上面的模块,我有两个问题:

  • 如何设置特定于每个实例的属性?现在你可以看到它_blah被覆盖了,这很明显。但我需要一些语法帮助。我的猜测是我需要像注释一样在构造函数中设置它。这是正确的方法吗?
  • 如何以另一种方法访问该属性?据我所知,thiswindowdoStuff().

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

4

1 回答 1

2

如何设置特定于每个实例的属性?现在你可以看到 _blah 被覆盖了,这很明显。但我需要一些语法帮助。我的猜测是我需要像注释一样在构造函数中设置它。这是正确的方法吗?

是的。这是使用 的正确方法this.blah = // value,但当然这使得变量blah可以不受任何限制地公开访问。

如何以另一种方法访问该属性?据我所知,这指的是 doStuff() 中的窗口。

doStuff()方法没有多大意义,因为当您在模块化内部定义这样的函数时,它通常是其他实例方法使用的实用程序函数。

于 2013-11-01T14:21:03.773 回答