jsクラスで関数を定義する際にプロトタイプを使用する場合と使用しない場合の違い

PHP中文网
リリース: 2017-03-29 15:30:34
オリジナル
1165 人が閲覧しました

私は オブジェクト の独善的な メソッドを作成するために js を使用してきました。問題が発生したとき、次のようにメソッドを定義しました。 >

コードは次のとおりです:

function ListCommon2(first,second,third) 
{ 
this.First=function () 
{ 
alert("first do"+first); 
} 
} 
ListCommon2.do1=function(first) 
{ 
// this.First(); 
alert("first do"+first); 
} 
ListCommon2.prototype.do2=function(first) 
{ 
// this.First(); 
alert("first do"+first); 
}
ログイン後にコピー
2 つのメソッドの違いは何ですか?プロトタイプを使用するかどうかはどうなりますか?


テストコード:

var t1=
new
 ListCommon2("烧水1","泡茶1","喝1"); 
// t1.do1();//调用出错 
ListCommon2.do1("烧水1"); 
var t2=new ListCommon2("烧水2","泡茶2","喝2"); 
t2.do2("烧水2");// 
// ListCommon2.do2("烧水1");//调用出错
ログイン後にコピー

テストの結果、プロトタイプを使用しないメソッドはクラスの
static メソッドと同等であることが判明しました。 ListCommon2. do1("沸騰したお湯 1"); のように呼び出すこともできますが、このように呼び出すとエラーになります
逆に、プロトタイプを使用する方法は、 new が許可されるまで使用できないクラスのインスタンス メソッドと同等です。クラスのインスタンス メソッド。new の後に使用する必要があります。関数は
functions
で呼び出すことができます。制限は、クラスのインスタンス メソッドの制限と同様です。
を使用します。プロトタイプで定義されていないメソッドはクラスの静的メソッドに相当します。 new なしで直接使用できます。また、関数内で呼び出せる関数にも制限があります。 クラスの静的メソッドには多少の制限があります。
と同様です。たとえば、this.First();
を呼び出すことはできません。

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