ECMAScript6はすでにクラスをサポートしていますが、以前のバージョンはクラスをサポートしていませんが、クラスをシミュレートするためにいくつかの方法を使用できます。
JSのクラスは重要なポイントと困難なポイントの両方であり、しばしば曖昧に感じます。
まず、JSの3つの非常に重要な知識ポイント、このプロトタイプ、およびコンストラクターを強調したいと思います。
(シミュレーション)クラスを定義する方法を要約しましょう。
1。工場モデル
関数CreateObject(name、age){var obj = new object(); obj.name = name; obj.age = age; obj.getname = function(){return this.name; }; obj.getage = function(){return this.age; } return obj;} var obj2 = create object( "wang wu"、19); console.log(obj2.getname()); console.log(obj2.getage()); console.log(obj2.constuctor);工場モードメソッドはオブジェクトを作成します。工場モードは、受け入れられたパラメーターに基づいて必要な情報を含むオブジェクトを作成できます。この方法は、無限に何度も呼び出すことができ、2つの属性と2つのメソッドを含むオブジェクトを返すたびに。工場のパターンは、同様のオブジェクトを作成する問題を解決しますが、オブジェクト認識の問題を解決しません。つまり、オブジェクトのカテゴリを決定してオブジェクトに統合することはできません。
2。コンストラクターメソッド
function person(name、age、job){this.name = name; this.age = age; this.job = job;} person.prototype = {constructor:person、getname:function(){return this.name; }、getage:function(){return this.age; }、getJob:function(){return this.job; }} var p = new person( "ermazi"、18、 "worker"); console.log(p.constructor); console.log(p.getname()); console.log(p.getage()); console.log(p.getjob());コンストラクターの方法はオブジェクトの所有権の問題を決定し、オブジェクトのタイプを決定できますが、コンストラクターのメソッドを各オブジェクトで再現する必要があり、いくつかのパフォーマンスの問題が発生します。
3。プロトタイプモード
function person(){} person.prototype = {constructor:person、name: "zhang san"、age:21、job: "teacher"、getname:function(){return this.name; }、getJob:function(){return this.job; }} var p = new person(); console.log(p.getname()); // Zhang San Console.log(p.getjob()); // Teachervar P2 = new Person(); p2.name = "li si"; console.log(p2.getname()); // li siインスタンスコードから、オブジェクトインスタンスはプロトタイプの値にアクセスできるが、プロトタイプの値を書き換えることができないことがわかります。プロトタイプで複製された属性がオブジェクトインスタンスで定義されている場合、属性はプロトタイプの属性をブロックしますが、書き換えられません。
4。パッケージング(今のところそれを呼びましょう)
var dog = {createdog:function(){var dog = {}; dog.name = "wangwang"; dog.sayhello = function(){console.log( "hello world!"); };犬を返します。 }}; var dog = dog.createdog(); dog.sayhello();すべてのコードをカプセル化して、インスタンスオブジェクト全体を返すことです。これは、工場パターンに少し似ています。
JS定義クラスの上記のいくつかの方法(推奨)は、私があなたと共有するすべてのコンテンツです。参照を提供できることを願っています。wulin.comをもっとサポートできることを願っています。