2014-01-29 43 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