独学では見逃しがちな部分(4)-作成者


並べてみましょう

const arr1 = new Array()
上のコードに配列を作成するために、コードnew+함수()が記述されている.
呼び出された関数の前にnewキーワードが追加された場合、この関数は생성자と呼ばれるオブジェクトを作成して返されます.
ここで、コンストラクション関数が返すオブジェクトは、関数のprototypepropertyが指すオブジェクトを親とする空のオブジェクトである.

関数を作成すると、オブジェクトが1つ増えます。


すべての関数にはprototypepropertyがあります.この関数がコンストラクション関数の役割として使用されることを考慮すると、関数を作成するときに内部でそうします.prototypepropertyとは、オブジェクトを指します.その関数がコンストラクション関数として使用されると、あるオブジェクトに子供を産んで、生まれると子供を連れて逃げてくれます.では、私たちは犯罪者ですか.
私たちが受け取ったオブジェクトの親は、関数のprototypePropertyが指すオブジェクトです.
しかし、今でもあの親というやつが何をしているのか分からない.
つまり、F1という関数を作成すると、
  • F1.prototype
  • 関数のprototypepropertyはF1.prototypeオブジェクトを指します.
  • したがって、F 1関数をコンストラクション関数として使用すると、F1.prototypeを親とする空のオブジェクトが返されます.
    ここで、F1.prototypeオブジェクトはObject.prototypeオブジェクトを親とする.

    今、もう一度配列を取り外します。


    JavaScriptの内部にはArray()という関数があります.私が作ったのではありません.
    このArray関数の構造を開きます.

    この関数にはprototype__proto__propertyもあります.これは関数であるためです.__proto__propertyはFunction.prototypeオブジェクトを指し、__proto__propertyには初代の祖先Object.prototypeオブジェクトがあります.
    関数を作成すると、함수명.prototypeという名前のオブジェクトが生成され、関数をコンストラクション関数として書くと、そのオブジェクトを親とする新しいオブジェクトが返されます.
    まず、Array関数のprototypepropertyを展開します.

    私たちが使っている配列方法はこのオブジェクトに含まれています.
    Array関数でnewキーワードを同時に使用すると、そのオブジェクトを親とするオブジェクトが返され、配列と呼ばれます.