クラスとオブジェクトの違いは何ですか?
8270 ワード
我々は、クッキー、車、そしていくつかのコードを探索することによって、この質問に答えるよう努力します.クラスは、複数のオブジェクトを効率的に作成する「テンプレート/青写真」です.
クッキー
最近休みが過ぎた.おそらくあなたとあなたの家族がクッキーを焼きました.時には人々は特別な形にこれらのクッキーをカット-雪だるま、クリスマスツリー、鐘、何でも.これはいくつかの方法で行うことができます. 個々のクッキー(オブジェクト)を平らにした生地を手で毎回 クッキーカッターテンプレート(クラス)を使用して一貫してクッキーをスタンプします 何が最初のオプションでいくつかの問題ですか?手動で一度に図形をカットすることはかなり退屈になります.それは、我々のエネルギーと時間を浪費します.
逆に、2番目のオプションは、少ない時間/エネルギーで多くのクッキーを作成することができます.
このシナリオでは、クッキーカッターは私たちのクラスでした.このクラスを使用していくつかのクッキーをインスタンス化します.
車
クッキーは大きいです、しかし、彼らは本当にどんな機能も持っていません.車はどうですか.
一般的に言えば、特定の自動車(オブジェクト)を製造するための設計仕様(クラス)は、あるエンジニアによって一度完成される.
その後、大量生産に時間があるときは、エンジニアが製造フロアに降りてくる必要はありませんし、各個々の車を構築する方法の各ステップを詳細に説明しますか?それは全く非効率的であり、会社の資源には消耗する.
代わりに、デザイン仕様(クラス)が続きます.デザイン仕様(クラス)は、各々の車の材料(必須)と必要な機能性(方法)を指定します.
コード例
それがクッキー、車またはコードであるかどうか、原則は同じです: 何が何であるかを説明するガイドラインのセットを作成します. 大量のこの事件のインスタンスを生成する コード例では、いくつかの非常に単純な'従業員オブジェクトを探索します多分、HRシステムの一部になるかもしれない何か.
各従業員は以下のようにしなければならない. ファーストネーム ラストネーム ID また、各従業員は、単に自分の名前を立てて休憩を要求することができますし、休憩を必要と言う.
どんなクラスなしでもこれを最初にしましょう.
さあ、Aをつくりましょう
テンプレートを作成する
オブジェクトをインスタンス化する
さあ、3人の従業員オブジェクトをもう一度作りましょう.
たとえそれがクッキー、自動車またはコードであるならば、従業員のインスタンスをつくるためにコード.原理は同じである.それは、クラスとして一度の仕様のコレクションを標準化するのを意味して、それから「大量生産」個々の物にそのクラスを再利用することになります.
クッキー
最近休みが過ぎた.おそらくあなたとあなたの家族がクッキーを焼きました.時には人々は特別な形にこれらのクッキーをカット-雪だるま、クリスマスツリー、鐘、何でも.これはいくつかの方法で行うことができます.
逆に、2番目のオプションは、少ない時間/エネルギーで多くのクッキーを作成することができます.
このシナリオでは、クッキーカッターは私たちのクラスでした.このクラスを使用していくつかのクッキーをインスタンス化します.
車
クッキーは大きいです、しかし、彼らは本当にどんな機能も持っていません.車はどうですか.
一般的に言えば、特定の自動車(オブジェクト)を製造するための設計仕様(クラス)は、あるエンジニアによって一度完成される.
その後、大量生産に時間があるときは、エンジニアが製造フロアに降りてくる必要はありませんし、各個々の車を構築する方法の各ステップを詳細に説明しますか?それは全く非効率的であり、会社の資源には消耗する.
代わりに、デザイン仕様(クラス)が続きます.デザイン仕様(クラス)は、各々の車の材料(必須)と必要な機能性(方法)を指定します.
コード例
それがクッキー、車またはコードであるかどうか、原則は同じです:
各従業員は以下のようにしなければならない.
どんなクラスなしでもこれを最初にしましょう.
const bob = {
fname: "Bob",
lname: "Smith",
id: 112334,
requestTimeOff() {
return `${this.fname} ${this.lname} needs a break!`
}
}
const alice = {
fname: "Alice",
lname: "Jones",
id: 112335,
requestTimeOff() {
return `${this.fname} ${this.lname} needs a break!`
}
}
const sam = {
fname: "Sam",
lname: "Walton",
id: 112336,
requestTimeOff() {
return `${this.fname} ${this.lname} needs a break!`
}
}
ここでいくつかの問題は何ですか?さて、我々は手動で毎回各従業員のそれぞれのプロパティを説明しています.またrequestTimeOff
各オブジェクトのために複製され、メモリを無駄にし、我々のコードを混乱させる!さあ、Aをつくりましょう
class
各従業員オブジェクトをカプセル化するテンプレートを作成する
class
)class Employee {
// Specify the properties of each 'employee'
constructor (fname, lname, id) {
this.fname = fname;
this.lname = lname;
this.id = id;
}
requestTimeOff() {
return `${this.fname} ${this.lname} needs a break!`
}
}
オブジェクトをインスタンス化する
さあ、3人の従業員オブジェクトをもう一度作りましょう.
const bob = new Employee ('Bob', 'Smith', 112334);
const alice = new Employee ('Alice', 'Jones', 112335);
const sam = new Employee ('Sam', 'Walton', 112336);
私たちの3人の従業員を作成するためにかかったどのくらいのコードに注意してください!たとえそれがクッキー、自動車またはコードであるならば、従業員のインスタンスをつくるためにコード.原理は同じである.それは、クラスとして一度の仕様のコレクションを標準化するのを意味して、それから「大量生産」個々の物にそのクラスを再利用することになります.
Reference
この問題について(クラスとオブジェクトの違いは何ですか?), 我々は、より多くの情報をここで見つけました https://dev.to/codefinity/what-is-the-difference-between-a-class-and-an-object-2d5iテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol