JSオブジェクト向けプログラミング(OOP)
オブジェクト向けプログラミング(OOP)オブジェクト向けプログラミング(Object-oriented Programming)は、プロセス向けプログラミングとは異なり、データと機能を組み合わせて を処理するプロパティとメソッドは、JavaScriptに埋め込まれた を使用するオブジェクトの概念です.モデルの青写真( を作成する.
Class
オブジェクト向けプログラミングでは、コンストラクション関数(
Instance
各インスタンスにクラスの一意のプロパティとメソッドがあります.
new Array() - MDN
オブジェクト向けプログラミングの特徴
1.カプセル化
アトリビュートと機能を1つのオブジェクトにばらばらに結合
分散結合は、コードの実行順序に従ってステップ別にコードを記述するのではなく、コードが表す実際の状況に従ってコードを組み合わせます.
カプセル化はまた、内部データまたは内部挙動が外部に露出することを防止することができる隠匿化の特徴を有する.
=>詳細実装またはデータを非表示にし、アクションのみを表示
厳密なクラスはまた、属性の直接アクセスを阻止し、設定された関数(
2.抽象化
抽象は内部実装が非常に複雑な概念であり,実際には露出した部分を簡単にする.
=>インタフェースが簡略化され(
あまり機能が露出していないので、意外な使用変化を避けることができます.
カプセル化のポイントがコードやデータの非表示である場合、抽象化のポイントは、クラスを使用する人が必要としない方法などを暴露するのではなく、機能を簡単な名前に定義することです.
3.継承
継承は子継承親のフィーチャーです
=>派生クラス(派生クラス)基本クラス(ベースクラス)のフィーチャーを継承
JavaScriptは
4.多形性
同じ方法でも異なる方法で実現できる
OOPフィーチャーに関する利点
パッケージ化により、コードの複雑さを低減し、再利用性を向上
抽象化は同様にコードを簡単にし,使用の簡素化による変化を最大限に低減することができる.
継承も不要なコードを減らすことで再利用性を向上
多形性を使用すると、if/else ifなどの条件文ではなく、同じ方法の異なるオブジェクト属性を作成できます.
Prototype
JavaScriptはプロトタイプベースの言語であり、プロトタイプ(
=>継承メソッドと属性としてすべてのオブジェクトにプロトタイプオブジェクト(prototype object)があることを示すテンプレート
Prototype chain(
オブジェクト向けプログラミングの継承プロパティJavaScriptでプロトコルタイプチェーンとして実装
Prototype - MDN
prototype/constructor/this
prototypeconstructurithsコンセプトモデルの青写真を作成するときに使用されるプロトタイプオブジェクトインスタンスの初期化時に実行されるコンストラクション関数の実行時に、各役割ドメインで作成される一意の実行コンテキストでnewキーを使用してインスタンスを作成すると、そのインスタンスがこの値になります.
object
とは異なり、クラス(Class
)Class
)を作成し、青写真に基づいてオブジェクト(Instace
)のプログラミングモードClass
class Car {
// 속성
constructor(brand, name, color) {
this.brand = brand;
this.name = name;
this.color = color;
}
// 메소드
refuel() {
}
drive() {
}
}
クラスのデフォルトルールを作成します.通常クラスは大文字と一般名詞で構成されます.オブジェクト向けプログラミングでは、コンストラクション関数(
constructor
)と呼ばれ、インスタンスの作成時に実行されるコードコンストラクション関数は戻り値を作成しません.this
はインスタンスオブジェクトを表しますInstance
let avante = new Car('hyundai', 'avante', 'white');
let sonata = new Car('hyundai', 'sonata', 'gray');
let grandeur = new Car('hyundai', 'grandeur', 'black');
インスタンスを作成すると、new
キーワードを使用してコンストラクション関数が直ちに実行され、変数にクラス設計に似た新しいオブジェクト、すなわちインスタンスが割り当てられます.各インスタンスにクラスの一意のプロパティとメソッドがあります.
new Array() - MDN
let fruits = new Array('사과', '바나나');
console.log(fruits.length) // 2
console.log(fruits[0]) // "사과"
アレイの定義はArrayインスタンスの作成と同じですオブジェクト向けプログラミングの特徴
1.カプセル化
アトリビュートと機能を1つのオブジェクトにばらばらに結合
分散結合は、コードの実行順序に従ってステップ別にコードを記述するのではなく、コードが表す実際の状況に従ってコードを組み合わせます.
カプセル化はまた、内部データまたは内部挙動が外部に露出することを防止することができる隠匿化の特徴を有する.
=>詳細実装またはデータを非表示にし、アクションのみを表示
厳密なクラスはまた、属性の直接アクセスを阻止し、設定された関数(
setter
)と読み込まれた関数(getter
)を完全に分離することもできる.2.抽象化
抽象は内部実装が非常に複雑な概念であり,実際には露出した部分を簡単にする.
=>インタフェースが簡略化され(
interface
)、クラス定義のメソッドとプロパティのみが定義されます.あまり機能が露出していないので、意外な使用変化を避けることができます.
カプセル化のポイントがコードやデータの非表示である場合、抽象化のポイントは、クラスを使用する人が必要としない方法などを暴露するのではなく、機能を簡単な名前に定義することです.
3.継承
継承は子継承親のフィーチャーです
=>派生クラス(派生クラス)基本クラス(ベースクラス)のフィーチャーを継承
JavaScriptは
extends
キーワードとsuper
キーワードを使用して継承を実現4.多形性
同じ方法でも異なる方法で実現できる
OOPフィーチャーに関する利点
パッケージ化により、コードの複雑さを低減し、再利用性を向上
抽象化は同様にコードを簡単にし,使用の簡素化による変化を最大限に低減することができる.
継承も不要なコードを減らすことで再利用性を向上
多形性を使用すると、if/else ifなどの条件文ではなく、同じ方法の異なるオブジェクト属性を作成できます.
JavaScriptはプロトタイプベースの言語であり、プロトタイプ(
Prototype
)はプロトタイプオブジェクトを表す=>継承メソッドと属性としてすべてのオブジェクトにプロトタイプオブジェクト(prototype object)があることを示すテンプレート
Prototype chain(
__proto__
)オブジェクト向けプログラミングの継承プロパティJavaScriptでプロトコルタイプチェーンとして実装
__proto__
では、親のプロトタイプ、または「親の親」のプロトタイプ(プロトタイプのアドレスがある)=>を参照できます.Prototype - MDN
prototype/constructor/this
prototypeconstructurithsコンセプトモデルの青写真を作成するときに使用されるプロトタイプオブジェクトインスタンスの初期化時に実行されるコンストラクション関数の実行時に、各役割ドメインで作成される一意の実行コンテキストでnewキーを使用してインスタンスを作成すると、そのインスタンスがこの値になります.
Reference
この問題について(JSオブジェクト向けプログラミング(OOP)), 我々は、より多くの情報をここで見つけました https://velog.io/@hoony0802/JS객체-지향-프로그래밍OOPテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol