JavaScriptプロトタイプについて
3000 ワード
始める前に。
用語では、MDN
ECMAScript規格はsomeObjectです.[Prototype]がオブジェクトsomeObjectのプロトタイプであることを示します.ECMAScript 2015から[Prototype]の祖先オブジェクトを開始します.getPrototypeOf()とObject.setPrototypeOf()を使用してアクセスするためです.これは、JavaScriptの標準ではないが、多くのブラウザで実装されている、事実上標準となっている属性
__proto__
と同じである.標準では[prototype]ですが、ブラウザでは
__proto__
、まずクロムでは__proto__
、確認できます.プロトタイプ
ネットワーク学習を行う過程で,今回の課題はプロトタイプを用いた.JavaScriptで何度もやっていますが、この単語は初めて聞きました.不思議ですね.しかし問題は解決する必要があり、今回もMDNとjavascript.infoを借りてプロトタイプとは何かを理解した.
prototypeとproto
javascriptでは、各関数に
prototype
という特殊な属性があります.関数を宣言すると、その関数のプロトタイプが生成されます.次に、ある変数に対してnewキーワードとして関数を呼び出すと、変数の__proto__
が関数のプロトタイプを指す.function A(){}
このように関数を宣言すると、その関数が宣言されると、実際にはプロトタイプが一緒に生成されます.次に、このAをaという名前の変数を使用するとnew A()が割り当てられる.a __proto__
という非表示属性があります.let a = new A();
a.__proto__;
まだあります.a.__proto__
を見て-> constructor : f A()
->
__proto__
: Objectこうして出てきた
aの
__proto__
は、Aのプロトタイプを参照してnewを呼び出すときに作成される.aではなくnew A()によって生成された他の変数であれば、__proto__
はAのPrototypeを指す.b = new A();
c = new A();
A.prototype.type = 'abc';
a.type; // 'abc'
b.type; // 'abc'
c.type; // 'abc'
プロトタイプチェーンと継承
Aの原型をよく見ると、
aの
__proto__
はAの原型を指し、このAの原型の__proto__
は対象を指す.Aだけでなく、すべての対象の原型に乗って、その果てはObject.prototypeです.
このような連続接続のプロトコルタイプはプロトタイプチェーンと呼ばれ、これを利用すると継承使用と同様に使用することができる.
もし私たちがaにない属性を使用するならば、まずaの内部で探して、もしないならば、aの
__proto__
を探します.実際のaになくても、継承されたプロトタイプであれば使用できます.そして、そこにもなかったら__proto__
に乗り続けます.結果はObject原型に着いても見つからなければ、ないと思って定義していません.したがって,単独で作成しなくても,オブジェクトにtoString,valueOfなどのオブジェクトの機能を使用することができる.
の最後の部分
理解するように書いてありますが、概要が一つしかないようで、これからもっと勉強して、補足して書きます.プロトタイプの使用とClassキーワードと一般関数で生成した違いなど,疑問がある.やることはたくさんあるが、簡単には減らない.まじめにやるんだ
MDNとjsinfoのほか、本ブログの内容もよくまとめられています.
https://velog.io/@adam2/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-Prototype-%EC%99%84%EB%B2%BD-%EC%A0%95%EB%A6%AC
Reference
この問題について(JavaScriptプロトタイプについて), 我々は、より多くの情報をここで見つけました https://velog.io/@leejihun96/자바스크립트-prototype에-대하여テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol