2012-01-27 11 views
2

exampleFunction()exampleFunction.call()を呼び出すの違いは何ですか? あなたは「呼び出し」メソッドを介して機能を使用することができますアクションスクリプトの機能があります。例えば、下記の '試験' 機能を使用するために、私はテスト()test.callを(書くことができる)exampleFunction()とexampleFunction.call()の呼び出しの違いは何ですか?

function test():void { 
trace('function was called') 
} 

違いは何ですか? ECMAScriptのと同様

答えて

12

(ASが由来する)、それは最初のパラメータを介して、「この」コンテキストを指定可能にします。

Function.callマニュアルを参照してください。機能対方法–または"bound functions" –と例についての発言を注意してください。

すなわち、所与:

function f():* { return this; } 
var x:Object = {f: f}; 

そして:それは "この" を異なるを有するものf()は(それが代わりGlobalと評価)ないしながら

f.call(x)x.f()両方がxに評価します。

(パラメータなし)を使用すると、 "this"はNaNになりますが、上記のようにGlobalは "this"となります。テストコードでtrace(this)を使用すると、より有用なコンテキスト情報が得られます。

ハッピーコーディング。

2

にも注意は.call()メソッドは、ジャクソンダンスタンすることにより、この研究によると、およそ10倍遅く思われること: http://jacksondunstan.com/articles/912

+1

クリスを使用する場合がありますいくつかの状況の詳細についてはこちらの記事をチェックアウト、あなたはおそらく、記事を要約しなければならないが除去することができる。 –

+0

新生児を訓練していただきありがとうございます。また、私の投稿はpstの非常に良い答えを補うことを意図していましたが、私は彼の答えにコメントすることはできませんでした。 – Chris

1

実用的な違いは、あなたの周りの機能を渡しているときに来て、あなたは、動的にそれらを使用したいですapply()はより一般的に使用されますが、より動的に引数のリストを作成できるためです。

全体の答えがリンクしている回答はStackOverflowのでオンに眉をひそめているとして、あなたがこれらのメソッドhttp://www.developria.com/2010/12/functional-actionscript-part-1.html

関連する問題