1

私は、プロトタイプ、コンストラクター、関数プロパティなどの高度な javascript トピックに飛び込んでいます (または試しています)。いくつかの事実から、javascript 関数もオブジェクトであるという結論に達しました。

次の理由から、関数のデータ型が であることを知っていfunctionます。

> typeof function(){}
'function'

とにかく:

  • 関数にプロパティを割り当てることができます(オブジェクトのように)
  • 関数にはlength属性があります
  • Function.prototypeのプロトタイプはObject.prototype(プロトタイプ連鎖):

    > Object.getPrototypeOf(Function.prototype) === Object.prototype
    true
    

JavaScript関数がオブジェクトであるかどうかを誰かが明確にしてもらえますか? もしそうなら、なぜtypeof function == 'function'typeof [] == 'object'; そうでない場合 - 上記の点についてはどうですか?

編集:もう1つの質問-ファーストクラスオブジェクトとは何ですか?

4

4 に答える 4

4

すべて (ほとんど) は JavaScript のオブジェクトです。

Function instanceof Object  // true
于 2013-06-26T21:22:40.130 に答える
2

はい、関数は JavaScript のオブジェクトです。それ((function(){}) instanceof Objectが本当です。

typeof function == 'function'、それらは関数でもあるためです。関数は Object プロトタイプから継承します。

オブジェクト初期化子(オブジェクト リテラル配列リテラル新しいコンストラクター) でインスタンス化されたものはすべて、 'object' 型になります。

于 2013-06-26T21:23:02.400 に答える