ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScriptオブジェクト指向でクラスを定義するにはどうすればよいですか?
JavaScript を多用すると、問題が発生します。1 つ目は、js オブジェクトのカプセル化です。js にはクラス メカニズムが用意されていないため、すべての関数がその関数のインスタンス化されたオブジェクトになります。クラス。ただし、この固有のクラスに依存して、新しいクラスの定義をシミュレートできます。 最初に思い浮かぶのは、関数を直接使用して完全に定義されたクラスを生成することです:
function myClass(arg,...) { this.attributeName; this.functionName = function(){}; }ただし、新しい myClass インスタンスが作成されるたびに、内部関数がスペースを再度開いて戻ります。 functionName への参照。しかし、これは私たちが想像していたクラスと矛盾しており、理論的にはクラスの機能を共有する必要があります。
より合理的なアプローチは、クラスの外で関数を定義し、クラス内の functionName に関数ポインターを割り当てることです。もう 1 つは、クラスの外で myClass.prototype.functionName = function(){} を使用することです。どちらも良い選択であり、2 番目の方がクラス定義に近いと言えます。
次に、var newObj = new myClass(); で完了です。
js の名前のない関数について
名前のない関数の機能の 1 つは、主に定義のために新しい関数オブジェクトへの参照を生成することです。
もう 1 つの用途は、パラメーターを含めることができない js の一部のコールバック関数です。
そのわかりやすい例は setInterval で、特にコールバック関数にパラメーターを追加する場合、多くの人にとって頭の痛い関数だと思います。
そして最も厄介なことは、DHTML が w3c によって指定された標準ではないため、ブラウザーごとに異なる setInterval パラメーター テーブルが提供されることです。 。 。
テストした 2 つのブラウザ (IE カーネル、Webkit カーネル) については
IE: setInvterval(function, msec [,lang]);
chrome:setInterval(function, msec [, pram1, pram2, .. ..] );
つまり、Chrome では関数にパラメーターを追加でき、パラメーターのリストは最後にあります。ただし、IE の最後のパラメータは、使用されるスクリプト言語の種類を示します。これは、IE は js に加えて、vbs などの他のスクリプト言語もサポートしているためです。
互換性の問題を解決するには、名前のない関数を使用する必要があります。 。 。
以上がJavaScriptオブジェクト指向でクラスを定義するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。