用匿名函数替换普通函数

时间:2013-10-07 16:43:11

标签: javascript oop anonymous-function

如何使用匿名函数替换接受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];}

3 个答案:

答案 0 :(得分:3)

这可能是你想要的:

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

所以在这里我们定义一个匿名函数(因为它没有名字)并立即调用它。 this.myProp将作为参数传递。

答案 1 :(得分:0)

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

可以使用“call”方法或“apply”方法在函数上调用任何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

答案 2 :(得分:0)

您的描述有点模糊,所以我只能猜测您想要为预定义对象添加功能。这可以用Prototype属性来完成。

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

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

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