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
被覆盖了,这很明显。但我需要一些语法方面的帮助。我的猜测是我需要在构造函数中像注释一样设置它。这是正确的方法吗?this
引用window
中的doStuff()
。答案 0 :(得分:2)
如何设置特定于每个实例的属性?现在你可以看到_blah被覆盖了,这很明显。但我需要一些语法方面的帮助。我的猜测是我需要在构造函数中像注释一样设置它。这是正确的方法吗?
是。这是使用this.blah = // value
执行此操作的正确方法,但当然这会使变量blah
无限制地公开访问。
如何以其他方式访问该属性?据我所知,这是指doStuff()中的窗口。
doStuff()
方法没有多大意义,因为当您在模块中定义类似函数时,它通常是其他实例方法使用的实用函数。