2014-01-29 41 views
-1

我正在试着做一个函数,每个赋值都有一个实例变量,例如带有实例变量的javascript函数

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:>

我不感兴趣的样品是因为它的功能我正在引用的实例。我要样品有某种变量或实例的特定于范围/背景我在参考样品。

+8

你完全误解了实例。 (你实际上没有) – SLaks

+3

'var a = Sample;'是对Sample()函数的引用,而不是实例。 – crush

+1

你想用这个完成什么? – BBog

回答

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

+0

这对我来说并不适用,因为Sample now是一个类型对象而不是类型函数。 我需要Sample是一个函数,它具有作用域/上下文相关的变量 – Flexo

+0

@Flexo由于您没有为您的问题提供任何上下文,因此任何人都难以提供特定于您的实例的答案。上面的答案解决了你问的问题。 – CodingIntrigue

+0

@Rraham不再了,因为我更新了问题 – Flexo