私はJSを使用して、独善的なオブジェクト指向の方法を書きました。次のように、メソッドを定義するという問題に遭遇しました。
コードコピーは次のとおりです。
function listcommon2(最初、2番目、3番目)
{
this.first = function()
{
アラート( "First do"+first);
}
}
listcommon2.do1 = function(first)
{
// this.first();
アラート( "First do"+first);
}
listcommon2.prototype.do2 = function(first)
{
// this.first();
アラート( "First do"+first);
}
2つの方法の違いは何ですか?プロトタイプを使用するかどうかの機能は何ですか?
テストコード:
コードコピーは次のとおりです。
var t1 = new listcommon2( "Boil Water 1"、 "Brew Tea 1"、 "Drink 1");
// t1.do1(); //呼び出し時にエラーが発生しました
listcommon2.do1( "沸騰した水1");
var t2 = new listcommon2( "Boil Water 2"、 "Buy Tea 2"、 "Drink 2");
t2.do2( "沸騰したお湯2"); //
// ListCommon2.Do2( "沸騰したお湯1"); //コールでエラーが発生しました
テスト後、プロトタイプを使用しなかった方法はクラスの静的方法と同等であるため、このように呼び出すことができます。listcommon2.do1( "沸騰水1");この方法で呼び出されると、エラーが発生します。
それどころか、プロトタイプを使用した方法はクラスのインスタンスメソッドと同等であり、新たに使用することはできません。 listcommon2.do2( "boilt water 1");これにより、エラーが発生します。
結論:プロトタイプを使用して定義された方法は、クラスのインスタンスメソッドと同等であり、新しい後に使用する必要があります。関数で呼び出すことができる関数の制限は、クラスのインスタンスメソッドの制限にも似ています。
プロトタイプを使用せずに定義されたメソッドを使用することは、クラスの静的方法と同等です。新しいなしで直接使用できます。関数で呼び出すことができる関数の制限は、クラスの静的方法の制限にも似ています。
たとえば、this.first()を呼び出すことはできません。