JavaScriptのプロトタイプは何ですか?
7679 ワード
プロトタイプはJavaScriptのシンプルで最も難しい機能です.一旦それがちょうど木または「チェーン」であるという主な概念を得るならば
JavaScriptのオブジェクトの基礎を最初にカバーしましょう.
すべてのJavaScriptオブジェクトには、それに関連付けられた2番目のオブジェクトがあります.これをプロトタイプと呼ぶ.objectはプロトタイプのプロパティの全てを継承します.
さあ、オブジェクトの基本に戻る.どのような方法を我々は1つを作成することができますか?
To
ツイスト😉) プロトタイプのないオブジェクトがあります.しかし、オブジェクトの99 %がそれを持っています.JavaScriptの通常動作はプロトタイプを生成し、プロトタイプのチェーンの一部として作成します.これは
この例では、使用することもできます
⌛ハッピーコーディングを読んでくれてありがとう⚡
私は今週、いくつかのオファーや発表を投稿驚くべき記事の毎週のニュースレターを取得します.購読するHere
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
Reference
この問題について(JavaScriptのプロトタイプは何ですか?), 我々は、より多くの情報をここで見つけました https://dev.to/rahxuls/what-are-prototypes-in-javascript-2hdkテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol