JavaScript Prototypeを簡単に理解
16314 ワード
なぜPrototypeを再ポップアップして作成しますか?
JavaScript
はPrototype
に基づく言語と呼ばれている.以前にもPrototype
について勉強したことがありますが、大体分かりました.でも今からPrototype
を見ると、何を言っているのかよく覚えていません.要するに、
JavaScript
はPrototype
に基づく言語であることが重要である.つまり、Prototype
はJavaScriptの核心と基礎である.その基礎を身につけてこそ、言語を制御するのに役立つと思います.プロトタイプベース?それは何ですか。
프로토타입 기반 프로그래밍
は、オブジェクト向けプログラミングの形式である.Class
のオブジェクト指向言語を使用して、Class
に記載された内容に従ってインスタンスを生成し、オブジェクトを使用する.JavaScript
はオブジェクト向けの言語ですが、Prototype
をベースにしています.Prototype
を使用して、新しいオブジェクトを継承および拡張して生成します.ES5
以降,Class
を用いて表現され,プロトタイプがClass
ベースに変換されただけでなく,文法のみが変更された.ではなぜJavaScriptはClassではなくPrototypeに基づいて作成されたのでしょうか。
Classよりも少ないメモリを使用します。
これは
Prototype
の利点であり、Class
ベースよりもメモリをより少なく使用する.VrGear
という青写真があります.この青写真に基づいた製品には共通の機能が必要であり、追加する製品にも同じ機能が含まれている必要があります.function VrGear() {
this.hello = function(){ console.log("I'am A")};
this.introduce = function(){ console.log("I'am B")};
}
let Quest2 = new VrGear();
let Vive = new VrGear();
console.log(Quest2);
console.log(Vive);
図に示すように、
hello
およびintroduce
の機能は、それぞれの製品に割り当てられる.それでは全部で4つ!4つの変数がメモリに割り当てられます.Lift S
、Reverb
などの製品を引き続き発売すると、2つ増加するごとにメモリも比例してスペースを占有します.このような問題は
Prototype
で解決できる.//VrGear이라는 원형 청사진을 만든다.
function VrGear() {}
VrGear.prototype.handTracking = function(){console.log("possible?")};
VrGear.prototype.frequency = function() {
const hertz =[60, 120, 144];
for(let hz of hertz){
console.log(`${hz}hz`)
}
};
let Quest2 = new VrGear();
let Vive = new VrGear();
console.log(Quest2);
console.log(Vive);
簡単に言えば、
VrGear.prototype
というある場所に存在する空のオブジェクトに、いくつかの機能が追加され、作成された製品Quest2
とVive
が、ある場所に存在するオブジェクトにおける機能(属性)をもたらし、使用する.最終的に、両方の製品は、プロパティをどこかで共有するために同じ機能を使用すると解釈されます.
では、なぜ可能なのかよく理解してみましょう.
なぜ共有できるのでしょうか?
JAvascriptには
Prototype Link
とPrototype Object
が存在し、総称してPrototype
と呼ばれる.Prototype
をより容易に理解するために、多く参考して、いくつかの種類に分けて書きます.整理した内容を見て、Prototype
を理解してください!!1.オブジェクトは常に関数です。
言い換えれば、
객체
は常に함수(Function)
を生成する.function A() {} //함수
let func = new A(); //func는 함수로 객체 생성
let arr = [];
let obj = {};
func
は、関数A()
によって生成される単一のオブジェクトである.arr
とobj
も実は関数によって生成されます.let arr = new Array();
let obj = new Object();
arr
とobj
はJavaScriptに組み込まれた関数なので、すべてのオブジェクトは関数から始まります.すべてのタイプを関数に印刷します.
undefined
null
を除いて2.Constructor資格を持つ関数「」のみnewキーワードを使用可能
Constructor
資格が付与されている場合、new
キーワードを使用してオブジェクトを作成できます.上のイメージのように近づくと、googlechromeお兄さんは資格がないと拒否します.
最終的には、すべての関数が
Constructor
になります.したがって、new
を使用できるのは関数のみです.3.Prototypeオブジェクトはプロトタイプのコピーであり、すべてのオブジェクトの拡張はここで完了します。
VrGear
という名前の関数が定義されています.関数を定義すると、独自の定義とともにPrototype Object
というコピーも作成されます.基本的には__proto__
とConstructor
の資格を持っています.Constructor
は自分のオリジナルを指し、prototype
はコピーを指す.現在、開発者は製品を設計する際に、いくつかの汎用機能を追加しようとしています.
Prototype Object
は通常のオブジェクトであるため、レプリカに機能を追加するためにprototype
という属性でアクセスすることができる.開発者が希望する機能を追加または削除できる方法が分かった.
VrGear.prototype.handTracking = function(){console.log("possible?")};
VrGear.prototype.frequency = function() {
const hertz =[60, 120, 144];
for(let hz of hertz){
console.log(`${hz}hz`)
}
};
let Quest2 = new VrGear();
let Vive = new VrGear();
4.protoは自分の祖先に知らせる族譜、鍵です。
__proto__
部分を見て、Assassin's Creed
というゲームを思い出しました.なぜこいつは祖先を教える族譜と鍵なのか.上には、VrGearというオリジナルコピーの青写真を使用して、各製品が使用できるように汎用機能を追加した開発者もいます.しかし、
Vive
およびQuest2
の内部にはこの機能は存在しない.Prototype Object
に存在する機能の使用については、参照方法を理解する必要があります.その存在は、各ゲストが持つ
__proto__
の属性と鍵である.これらの機能はコピー
VrGear.prototype
に存在することが分かった.VrGear.prototype
にもないと仮定すると、__proto__
の属性を使用して、対応する機能が見つかるまで、最も高いObject
のPrototype Object
に達するまで探索することができる.見つからない場合は、よくあるundefined
かTypeError
を見学することができます.このように一番上から一番下までのオブジェクトは情報を共有し、一番下のオブジェクトは
__proto__
属性で一番上まで接続された接続リングをPrototype Chain
と呼ぶ.3行の概要
の最後の部分
もう忘れないで
ref: プロトタイプの理解 , りん酸赤型 , JavaScriptのプロトタイプを使用する理由
Reference
この問題について(JavaScript Prototypeを簡単に理解), 我々は、より多くの情報をここで見つけました https://velog.io/@pixelstudio/JavaScript-Prototype-이해하기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol