JavaScriptのプロトタイプは何ですか?


プロトタイプはJavaScriptのシンプルで最も難しい機能です.一旦それがちょうど木または「チェーン」であるという主な概念を得るならばObject.getPrototypeOf() またはinstanceof 演算子もコンストラクタ.

JSのオブジェクト


JavaScriptのオブジェクトの基礎を最初にカバーしましょう.
const obj - {
    x: 1, // property with key x and value 1
    y: 2, 
    doubleY: function() {
        return this.y * 2 // this keyword
    }
}

obj.x        // 1 - dot access
obj.['y']    // 2 - dynamic access
obj.doublyY() // 4 - method call

obj.toString() // '[object Object]'

// WAIT...!! Who defined obj.toString? 

では、プロトタイプは何ですか?


すべてのJavaScriptオブジェクトには、それに関連付けられた2番目のオブジェクトがあります.これをプロトタイプと呼ぶ.objectはプロトタイプのプロパティの全てを継承します.
const obj = {x: 1}

// get the prototype of obj: 
Object.getPrototypeOf(obj); // Object

//obj inherits properties from Object
obj.toString() // '[object Object]'
// We haven't defined the toString method but obj inherited it from it's prototype. 

オブジェクトの作成


さあ、オブジェクトの基本に戻る.どのような方法を我々は1つを作成することができますか?
// First way
let a = {a: 1}; 

// second way
let b = new Object(); 
b.x = 1; 

Object.getPrototypeOf(a) // Object.prototype
Object.getPrototypeOf(b) // Object.prototype
// The objects created by new Object () inherits from Object.prototype just as the object creared with { } does. 
オブジェクトを作成する第3の方法もあります、そして、それはオブジェクトを新しくつくられたオブジェクトのプロトタイプとして使用する自由を与えます.
// Third way

let c = Object.create(null, {})
Object.getPrototypeOf(c) // null
// we just created an object without prototype 

オブジェクト。create ()


To Object.create() メソッドは、新しく作成したオブジェクトのプロトタイプとして既存のオブジェクトを使用して新しいオブジェクトを作成します.最初のパラメータは既存のオブジェクトです.番目は新しく作成されたオブジェクトです.
const obj = {a: 1, b: 2}
const obj2 = Object.create(obj, {})
obj2.j = 10
obj2.j // 10 (own property)

Object.getPrototypeOf(obj2) // obj
obj2.a // 1 (inherited property)
//obj2 inherited the properties of obj

// what if we go all the way down? 
Object.getPrototypeOf(obj2) // obj
Object.getPrototypeOf(obj) // Object.prototype
Object.getPrototypeOf(Object.prototype) // null
// This is called the prtotype chain!


プロトタイプチェーン


ツイスト😉) プロトタイプのないオブジェクトがあります.しかし、オブジェクトの99 %がそれを持っています.JavaScriptの通常動作はプロトタイプを生成し、プロトタイプのチェーンの一部として作成します.これはObject.prototype はNULLに評価される.他の全てのオブジェクトはObject.prototype そして、彼らはすべてチェーンを形成します.
この例では、使用することもできますObject.create() tpプロトタイプを使用しないオブジェクトを定義します.あなたが何をしているかわからないならば、私は推薦しません.
⌛ハッピーコーディングを読んでくれてありがとう⚡
私は今週、いくつかのオファーや発表を投稿驚くべき記事の毎週のニュースレターを取得します.購読するHere