[JavaScript]プロトタイプ(Prototype)
1480 ワード
プロトタイプ
proto=>ダンプ
[]2つのかっこ=>オブジェクトを非表示
(protoは[prototy]]オブジェクトにアクセスするレベルのようなものです)
オブジェクトのプロパティまたはメソッドにアクセスすると、オブジェクトにプロパティ、メソッドが見つからない場合は、オブジェクトの[Prototype]オブジェクトにアクセスした後、そのプロパティ、メソッドが存在するかどうかを検索します.
=>プロトタイプチェーンに沿って検索します. プロトタイプチェーンに沿って検索するときに最初に現れる属性は、メソッドに近い. すべての関数は、定義されると自動的にプロトタイプ属性を有します.(*矢印関数を除く*) プロトタイプ属性に格納されている値は、コンストラクション関数という属性を持つオブジェクトであり、それ自体を指す関数が格納されている. newキーを持つ関数が呼び出されると、新しいオブジェクトが割り当てられ、自動的に返されます. 、オブジェクトの作成時にthis.protoは構造関数のprototypeを自動的に代入する. オブジェクトに希望する値がない場合は、プロトタイプで検索します.
proto=>ダンプ
[]2つのかっこ=>オブジェクトを非表示
非表示の[prototype]オブジェクトにアクセスします。
1.protoは来賓を通じてアクセスできる
let o = {};
console.log(o.__proto__);
protoと[[prototype]は違います!(protoは[prototy]]オブジェクトにアクセスするレベルのようなものです)
2.Object.getPrototypeOfからアクセス可能
let o = {};
console.log(Object.getPrototypeOf(o));
来賓を通じてもメソッドを通じても、結果は同じです.プロトタイプ
=>プロトタイプチェーンに沿って検索します.
//함수 선언식이든 표현식이든 상관없이 prototype을 갖는다.
function func1() {};
let func2 = function() {};
console.log(func1.prototype); //{constructor: func1}
console.log(func2.prototype); //{constructor: func2}
function User(name){
//자동으로 대입
//this = {}
//this.__proto__ = User.prototype //{ constructor: User}
this.name = name;
//return this;
}
※プロトタイプオブジェクトに共通メソッドが定義されていても、この値はポイント(.)前のオブジェクトを指しているので、正常に使用できます.Reference
この問題について([JavaScript]プロトタイプ(Prototype)), 我々は、より多くの情報をここで見つけました https://velog.io/@chm0202/JavaScript프로토타입Prototypeテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol