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];}
4

3 に答える 3

3

これはおそらくあなたが望むものです:

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

したがって、ここでは無名関数を定義し (名前がないため)、すぐに呼び出します。this.myProp引数として渡されます。

于 2013-10-07T16:55:53.747 に答える
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

于 2013-10-07T16:48:05.053 に答える
0

あなたの説明は少し曖昧なので、事前定義されたオブジェクトに関数を追加したいだけだと推測できます。それはプロパティで行うことができPrototypeます。

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

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

于 2013-10-07T16:54:06.143 に答える