2013-10-07 29 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; 
}