2013-10-07 60 views
0

如何使用匿名函數替換接受this並返回結果的普通函數?請描述變量如何發送到匿名函數和從匿名函數發送。用匿名函數替換正常函數

例如,替換:

function myFunc(myProp){return [1*myProp,2*myProp,3*myProp];} 
this.myProp=2; 
var myArray1=myFunc(this.myProp); 

的東西,如:

var myArray2=function(){return [1*this.myProp,2*this.myProp,3*this.myProp];} 
+0

究竟是什麼問題? – Hogan

+0

第二個仍然是一個函數定義,您只需將它分配給一個變量。 –

+0

這功課? – Ibu

回答

3

這可能是你想要什麼:

var myArray2=(function(myProp){ 
       return [1*myProp,2*myProp,3*myProp];} 
      )(this.myProp); 

所以在這裏我們定義了一個匿名函數(因爲它沒有名字),並立即調用它。 this.myProp將作爲參數傳遞。

+0

謝謝Grame_mao。這正是我想要做的。如何添加'(this.myProp)'使得它返回一個數組而不是一個函數?此外,據我瞭解,沒有明確地傳遞'this.myProp'並將其分配給'myProp',我仍然可以訪問'this.myProp',對嗎?仍然像你的方式更多。 – user1032531

+0

@ user1032531好吧,如果我們有一個名爲F的函數,那麼我們使用F()來調用它。在這裏我們定義一個函數,然後像調用普通函數一樣調用它。 'This'將引用你的函數被調用的對象,因爲這裏是一個匿名函數,我們直接調用它,'this'引用Window對象。 –

+0

@ user1032531,你可以看看gp的答案,它也可以。 –

0
var myArray2=(function(){return [1*this.myProp,2*this.myProp,3*this.myProp];}).call(this); 

任何JavaScript函數可以使用 「呼」 的方法或 「應用」 的功能方法被調用。 在這兩種方式中,第一個參數是「this」變量在功能塊內引用的上下文對象。

更多: http://msdn.microsoft.com/en-us/library/ie/h2ak8h2y(v=vs.94).aspx http://odetocode.com/blogs/scott/archive/2007/07/05/function-apply-and-function-call-in-javascript.aspx

+0

也許你關心說明? – Ibu

+0

調用/應用方法可以在任何函數上調用,其中第一個參數是「this」在函數體中引用的上下文。 –

+0

現在你可以添加到你的答案 – Ibu

0

你的描述是有點含糊,所以我只能猜測你想要的功能添加到預定義的對象。這可以通過Prototype屬性來完成。

FooBar = function(){ this.foo = 1; }

FooBar.prototype.getFoo = function() { 
    return this.foo; 
}