javascript_js オブジェクト指向でクラスを記述する方法の 1 つ

WBOY
リリース: 2016-05-16 18:50:37
オリジナル
963 人が閲覧しました

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 では関数を使用してクラスを定義し、パラメーターは型を定義する必要がないことです。

クラスが記述されたので、いくつかのオブジェクトを作成しましょう:



コードをコピーします
コードは次のとおりです。 var p1 = 新しい人("ジャック"); var p2 = 新しい人("トム"); console.log(p1 インスタンス);//true
console.log(p2 instanceof Person);//true


コンソール出力は、p1 と p2 が実際にクラス Person のオブジェクト インスタンスであることも証明します。

このメソッドの利点は、パラメーターに従って異なるオブジェクト インスタンスを構築できることです。欠点は、構築中に各インスタンス オブジェクトが getName メソッドのバージョンを生成するため、メモリが無駄に消費されることです。
もちろん、経験豊富なプログラマは、外部関数を使用してクラス メソッドを置き換え、各オブジェクトが同じメソッドを共有するようにします。書き換えられたクラスは次のとおりです:




コードをコピー
コードは次のとおりです://外部関数function getName() { return this.name>}
function person(name) {
this.name = name; getName;// ここに注意してください
}


はは、コードスタイルが少し物足りないと思う人もいるかもしれません。Java ほどコンパクトではありません。しかし、メモリ消費量は確かに削減できます。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート