EMCA262 仕様にはクラスの概念がありません。js の新機能により、c と java に似たものになります。ここで言及されているライティングクラスは、js コードスタイルを記述するだけです。
1. コンストラクターメソッド
/* *
* 人物クラス: 人物を定義し、属性名と getName メソッドを持ちます
* @param {String} name
*/
function person(name) {
this.name = name;
this.getName = function() {
return this.name;オブジェクトの構築にはいくつかのパラメータの設定が必要であり、パラメータはクラス内でこれに割り当てる必要があるため、このスタイルは Java を書いたことがある人にとっては馴染みのあるものです。ただし、Java との違いは、JS では関数を使用してクラスを定義し、パラメーターは型を定義する必要がないことです。
クラスが記述されたので、いくつかのオブジェクトを作成しましょう:
コードをコピーします
console.log(p2 instanceof Person);//true
コンソール出力は、p1 と p2 が実際にクラス Person のオブジェクト インスタンスであることも証明します。
このメソッドの利点は、パラメーターに従って異なるオブジェクト インスタンスを構築できることです。欠点は、構築中に各インスタンス オブジェクトが getName メソッドのバージョンを生成するため、メモリが無駄に消費されることです。
もちろん、経験豊富なプログラマは、外部関数を使用してクラス メソッドを置き換え、各オブジェクトが同じメソッドを共有するようにします。書き換えられたクラスは次のとおりです:
コードをコピー
コードは次のとおりです://外部関数function getName() { return this.name>}
function person(name) {
this.name = name; getName;// ここに注意してください
}
はは、コードスタイルが少し物足りないと思う人もいるかもしれません。Java ほどコンパクトではありません。しかし、メモリ消費量は確かに削減できます。