【发布时间】:2012-08-11 00:48:02
【问题描述】:
在我最后一个问题之后,这个问题对我来说更准确:
示例:
function Foo() {
this.bla = 1;
var blabla = 10;
blablabla = 100;
this.getblabla = function () {
return blabla; // exposes blabla outside
}
}
foo = new Foo();
我现在的理解:
this.bla = 1; // will become an attribute of every instance of FOO.
var blabla = 10; // will become a local variable of Foo(will **not** become an attribute of every instance of FOO), which could be accessed by any instance of FOO - only if there's a method like "this.getBlabla". that's a "closer" ?
blablabla = 100; // will define a **new** (or change if exist) global(window) variable.
我理解正确吗?
另外 - 如果我在承包商中包含 var blabla = 10; 和使用它的 getblabla 函数,那么对于 Foo("foo"...) 的每个实例,将在内存中保存一个 Foo 承包商函数包括这个“私有”变量。还是与私有变量的位置相同的 Foo 函数 - 对于 Foo 的 ALL 实例(如“foo”)?
【问题讨论】:
-
您的前三个断言是正确的。我不完全遵循您对最后一个问题的要求。你能澄清一下吗?您也可以尝试名称不相似的变量吗?很难跟上。谢谢。
-
这对我来说也很复杂。我的意思是 - 这是一个关闭,对吧?它是一个承包商——所以,对于 Foo 的每个实例,内存中都会有一个新的 Foo 闭包?这东西是怎么工作的?谢谢。
标签: javascript constructor this var