[SEB] Today I Learn


Prototype Object


JAvascriptはPrototypeに基づく言語です.
JavaScriptで関数を定義すると、Constructorが与えられます.
コンストラクション関数を付与する関数は、newキーワードによって生成することができる.Prototype Objectが生成され、この関数によって作成されたオブジェクトがPrototype 속성に接続される.
function Person(name, age) {
  this.name = name;
  this.age = age;
}

Person.prototype.sayHello = function() {
  console.log('hello!');
};
Person.prototypeは、あるPrototype Object(원형객체)に接続されている.上記のコードでPerson.prototype.sayHelloが定義されている場合、sayHelloという属性が任意のプロトタイプオブジェクトに追加され、Personがプロトタイプオブジェクトに関連付けられているため、sayHelloを使用することができる.

Prototype Link

function Person() {}

Person.prototype.name = 'quakka'
Person.prototype.age = 29;

let quakka = new Person();
console.log(quakka.name); // 'quakka'
上記のコードでは、quakkaの例は、何も定義されていないPersonで作成されたオブジェクトであり、nameの属性を有する.
次に、上記のコードではprototypename属性が定義されている.
これがprototype Linkの概念です.quakkaをコンソールに撮ります.
__proto__のプロパティが上から見えます.
生成された関数のプロパティを示します.
子供が親のDNAを受け継いだように...
すなわち、quakka.nameの属性とは、親Person.prototypeに定義されたnameの属性を指す.
このように、データは連続的に重複している.
JavaScriptをprototypeベースの言語と呼ぶことができる理由です.Prototypeだけで数十のブログを書くことができ、多くの概念が含まれています.これからも勉强を続けていきたいと思います.