JavaScriptのObject、Functとカスタムfunctionの違いと連絡

3519 ワード

Javascript中Object、Fnction、カスタムfunction詳細
三者の関係を理解するには、次の図を理解しなければならない.
この図の3つの関係を理解することができます.
Functionはコンストラクタと呼ばれています.つまり関数です.jsの中の万物はすべて関数です.jsのすべての対象はFunctionによって作られた.カスタムオブジェクト、内蔵オブジェクト、それ自体が含まれます.具体的にFunctionについての紹介はFunctionを見ることができます.Function内部のプロトタイプ関係は下図のようです.関数Functionは他の関数とは異なり、彼のプロトタイプと_プロトFunctionの原型を指します.prototypeと_に注意してください.プロト両者の違いプロトタイプの開発者は方法で直接訪問することができます.プロトは、インスタンスオブジェクトの内部属性を表します.関数Functionもそれ自体が作り出したものなので、彼の_プロト自分の原型を指す.どう理解しますかプロトプロトタイプはこのように理解できます.
プロトタイプ:コンストラクタを作成すると、このコンストラクタはプロトタイプ属性を自動的に作成します.この属性はポインタでオブジェクトを指します.このオブジェクトは自分が作成したコンストラクタの原型オブジェクトといいます.
_.proto_:コンストラクタが作成されました.ユーザーがこのコンストラクタの例を作成した後(new)、この新しい例の下にも自動的に属性_を追加します.プロト.内部属性と呼びます.ES 5では[prototype]と表示されていますが、一般ユーザーはアクセスできません.しかし、Firefox、Safari、Chrome、およびIE 9以上は、Object.get ProttypeOf(例)を用いてインスタンスのこの属性にアクセスすることができる.実はこの属性はこの例のコンストラクタの原型オブジェクトを指しています.
 console.log(Function.prototype); //--> function(){}
 console.log(Object.getPrototypeOf(Function); //--> function(){}
 console.log(Function.prototype===Object.getPrototypeOf(Function)); //--> true
 console.log(Object.getPrototype(Function.prototype)); //--> Object{};
実はconsoneからFunctionのプロトタイプのオブジェクトが空の関数であることが分かりますが、この空の関数の_プロトまたObject.prototypeを指します.次にこの図を見ます.
この図の破線からObject.prototypeの中の_が見られます.プロト内部属性は空のオブジェクトNullを指します.function Object中の_プロト内部属性が指しているのはFuntions.prototypeテストコードです.
console.log(Object.prototype); //--> Object{};
console.log(Object.getPrototypeOf(Function.prototype)); //--> Object{}
console.log(Object.prototype===Object.getPrototypeOf(Function.prototype)); //-->true;
console.log(Object.getPrototypeOf(Object.prototype)); // -->null;
この図は基本的にFunctとObjectの関係を明らかにしました.ここでまとめをして、さらに分析しています.関数FunctionもObjectも彼らの原型の対象です.実はすべてObject.prototypeの原型の対象をめぐって展開しています.
まず、jsで最初に作成したのはObject.prototypeというプロトタイプのオブジェクトです.そして、この原型オブジェクトをもとにFuntion.prototypeという原型オブジェクトを作成しました.次に、このプロトタイプのオブジェクトからFunctionという関数を作成します.最後にFunctionという関数で作成した後、Object()というオブジェクトです.
実はここで一つの問題があります.typeofという属性を使って一つの関数がobjectなのかそれともfunctionなのかを判断できます.しかし、この両者はいったいどういう区別がありますか?もしobjecが彼がfunctionだとしたら、なぜこの二つを区別しますか?」この問題は説明が必要です.了解したらすぐ更新します.
次にObjectの例を追加します.
次にユーザー定義関数を追加します.
文章はまだ更新中です.間違いがあれば、直ちに指摘してください.神様を忘れましたか?