2009-05-22 23 views

答えて

10

一般に、オブジェクトは関数ではなく呼び出し可能です。すべてがオブジェクト(関数を含む)である言語では、呼び出し可能オブジェクトはFunctionクラスから降下する必要はありません。

JSでは、Callableは内部[[Call]]メソッド( 'object'ではなく 'function'の型によって識別される)を持つものです。関数(スライドで使用される)は、Functionオブジェクトの子孫です。私は間違っている可能性がありますが、スクリプト内では、ECMAScript実装では関数ではないCallableを定義することができます。

匿名関数/関数式と宣言された関数の両方でスライドからコードフラグメントを試すと、結果は同じになります。

typeof function() {}; // == 'function' 
({}).toString.call(function() {}) // == '[object Function]' 
function foo() {} 
typeof foo; // == 'function' 
({}).toString.call(foo) // == '[object Function]' 
+3

そしてここで、outis'応答を啓発することがあることになった方法の議論である。http://bugs.ecmascript.org/ticket/153 –

+0

さらなる情報: (関数(){}) 。コンストラクタ; \t //→関数プロトタイプ ({})。コンストラクタ。 \t \t //オブジェクトプロトタイプ – ken

+2

@FranCorpierそのリンクは悪いです。それを更新できますか?それは面白い議論かもしれないように見えます。 – Icode4food

関連する問題