我正在尝试为每个分配创建一个具有实例变量的函数,例如
function Sample() {
Sample.myInstanceVar = true; // <--- This var should be instance-specific
}
var a = Sample;
console.log(a.myInstanceVar); // should return undefined and it does
a.apply(this);
var b = Sample;
console.log(b.myInstanceVar); // i would like to get this one to return undefined here, but it returns true;
希望你明白这一点: - )
UPDATE产品:&gt;
我对Sample是一个实例不感兴趣,因为它是我引用的一个函数。我希望Sample有一些特定于我引用Sample的范围/上下文的变量或实例。
答案 0 :(得分:9)
function Sample() {
Sample.myInstanceVar = true; // <--- This var should be instance-specific
}
没有。这会修改Sample
var a = Sample;
没有。这会复制对上述全局对象的引用。
如何创建实例:
var a = new Sample();
new
是重要的一点。如果你没有参数,()
是可选的,但包括它们是好的风格。
如何在实例上定义属性:
使用this
关键字。在使用new
调用的函数中使用时,它指的是正在创建的实例。
function Sample() {
this.myInstanceVar = true;
}
当然,这将针对您创建的Sample
的每个实例运行,因此b
会在其中存储不同的true
。