ホームページ > ウェブフロントエンド > jsチュートリアル > JSクラス定義プロトタイプmethod_jsオブジェクト指向の2つの実装の違いについては、多くのコメントがあります。

JSクラス定義プロトタイプmethod_jsオブジェクト指向の2つの実装の違いについては、多くのコメントがあります。

WBOY
リリース: 2016-05-16 19:08:59
オリジナル
963 人が閲覧しました

プロトタイプ メソッドを JavaScript クラスに追加するのは非常に簡単であることがわかります。また、以下の2つの方法がよく使われますが、この2つの方法の使い方に違いはあるのでしょうか?
JScript クラス:

コードをコピー コードは次のとおりです。

function JSClass( )
{ >

JSClass.prototype.MethodA = function()
{

}; コードをコピーします


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


function = JSClass.prototype.MethodA()
{

};

# re: JS クラス定義のプロトタイプ メソッドの 2 つの実装の違い 返信 コメントをもっと見る
まず簡単な違いについてお話します。これら 2 つのメソッドによってインポートされるプロトタイプ メソッド。最初のメソッドは匿名メソッドです。 2 番目のメソッドのメソッド名は「JSClass.prototype.MethodA」です。
2005-03-01 10:52 | Birdshome
# re: JS クラス定義プロトタイプ メソッドの 2 つの実装の違い 返信 コメントをもっと見る

<script> function JSClass() <BR>{ <BR>} <BR><br>function = JSClass.prototype.MethodA() <br>{ <BR><br>}; </BODY> <br><br>プロンプトエラー。 <br>2005-03-01 13:51 | 阮 <br># re: JS クラス定義プロトタイプ メソッドの 2 つの実装の違い 返信 コメントをもっと見る <br>かすかですが、FreeTextBox が少量のデータを変更していることがわかりました ( 1 つまたは 2 つの文字 )送信しても効果がない場合があります:( <br>誤って余分な「=」を書いてしまいましたが、修正したことを覚えています。 <br>2005-03-01 14:00 | Birdshome <br># re: JS クラス定義のプロトタイプ メソッドの 2 つの実装の違い 返信 コメントをもっと見る <br> 実際、これら 2 つのプロトタイプ定義メソッドは、説明のために単純化できます。まず、次のように 2 つの関数として扱います。 <br><br> function Foo1() <br> { <br> warning('This is Foo1.') <br> } <br> および Foo2() var Foo2 = function() { <br>alert('This is Foo2.'); <br> } <br><br> 明らかに、最初の実行時にはエラーは発生しませんが、2 番目の実行時には問題が発生します。これは、関数定義 (Foo1) が最初に処理されないことを意味します。関数呼び出しを処理する方法がありません。最初に fn1() を定義してから fn2() を定義すると、解析が失敗します。なぜ Foo2 が初期化されないのでしょうか。 Foo2 は関数定義ではありません。Foo2(Foo2()) が関数オブジェクトのインスタンスを指しているためです。 >2005-03-03 22:17 | Birdshome <br># re: JS クラス定義のプロトタイプ メソッドの 2 つの実装の違い 返信 コメントをもっと見る <br> プロトタイプ メソッドをインポートする 2 つの方法を見てみましょう。とても簡単です。 。また、実行優先度の違いによって、その使用方法の違いも決まります。次の例を参照してください。 <br><script language="javascript"><BR>{ <BR> this.通常のクラスで。'; <BR> this.m_property2 = '通常のクラスでの p2。 '[Class NormalClass ]'; <BR><br> return new InnerClass(); InnerClass() <br> { 🎜 > this.m_Property2 = '内部クラスの P2。'; <BR><BR> this.toString = function() <BR> { <br> return '[class InnerClass]'; 🎜><br> InnerClass.prototype.Method1 = function() <br> { <br> アラート(this.m_Property1) ); <BR> }; <BR><BR> 関数 InnerClass.prototype.Method2() <br> { <br> アラート(this.m_Property2); <BR> } <BR></script>

実行:
var nc = new NormalClass(); 🎜> nc.Method1();
nc.Method2(); 効果は何ですか?なぜ?


2005-03-03 22:21 | Birdshome
# re: JS クラス定義プロトタイプ メソッドの 2 つの実装の違い 返信 コメントをもっと見る
最終結果は実際には nc.Method1 です() が定義されていない場合、nc.Method2() は正常に実行されます。
実際、InnerClass.prototype.Method1 = function() が代入ステートメントの実行に依存しているのに対し、関数 InnerClass.prototype.Method2() はスクリプト エンジンによって最高の優先順位で初期化されることは驚くべきことではありません。
2005-03-05 02:43 | Birdshome
# re: JS クラス定義プロトタイプ メソッドの 2 つの実装の違い 返信 コメントをもっと見る
Antechinus JavaScript Editor でコードをテストしました:

関数 InnerClass.prototype.Method2() がエラーを報告します。

SyntaxError:missing( 仮パラメータの前。参照: .prototype.Method2(
2005-05-10 17:11 | Error
# re: JS クラス定義プロトタイプ メソッドの 2 つの実装の違い 返信 コメントをもっと見る
@Error
IE で試してみましたか?
2005-05-10 17:30 Birdshome
# re: JS クラス定義のプロトタイプ メソッドの 2 つの実装の違い 返信 コメントをもっと見る
仮パラメータの前に FF: missing( を使用すると、同じエラーが発生します。 参照: .prototype.Method2(
2006-08-19 22: 40 | jzz
# re: JS クラス定義プロトタイプ メソッドの 2 つの実装の違い 返信 コメントをもっと見る
return new InnerClass(); この行を
function InnerClass.prototype.Method2() に移動します。
{
alert(this.m_Property2);
その後の FF エラー レポート: missing( を参照してください。 .prototype.Method2(
ie は
FF が関数 InnerClass.prototype.Method2() を実行するとき、この InnerClass クラスの存在をまったく知りません。したがって、当然プロトタイプのようなものを思いつくことはできません。 xxx 理由もなく
2006-11-13 00:57 | Doutu
# re: JS クラス定義プロトタイプ メソッドの 2 つの実装の違い 返信 コメントをもっと見る
@Doutu
Put return new InnerClass (); 関数へ InnerClass.prototype.Method2() メソッドの後は、この例を作成する当初の意図に完全に違反しています。この例は、IE が関数定義形式の function foo() に対して高い解析優先順位を持っていることを示していますが、 foo = function() は単なる通常の代入ステートメントです。 ff の状況については調べていませんが、ff では return 後に InnerClass が見つからないとのことなので、逐次解析関数 foo() が定義された形式であることを意味します。
2006-11-13 01:29 | Birdshome
# re: JS クラス定義プロトタイプ メソッドの 2 つの実装の違い 返信 コメントをもっと見る
ため息。 ieしか使えない貧乏人。関数 x.y.z() {} の記述方法は単に非標準の記述方法であり、ff や opera などの他の js エンジンではエラーが報告されます。この標準を満たす唯一の記述方法は、 x.y.z = function () {};

もちろん、文法レベルから見ると、私はこの記述方法が非常に気に入っており、将来の標準でもこの記述方法が採用されることを願っています。
2006-11-28 11:04 | hax
# re: JS クラス定義プロトタイプ メソッドの 2 つの実装の違い 返信 コメントをもっと見る
はは、hax は正しいです。子供のあらゆる間違いを母親のように許してくれるのは IE だけです

標準的な書き方は x.y.z = function () {}; だけです

実は IE はもっと変わった書き方もサポートしています。

この
関数を見てください window::onload(){
alert("go_rush")
}
2006-11-28 14:39 | Go_Rush
# re: JS クラス定義プロトタイプ メソッドの 2 つの実装の違い 返信 コメントをもっと見る
@hax
標準がどれほど優れていても、それは依然として人々の役に立ちます。これに関する議論は学者とエンジニアの間の問題です。うまく実装しましょう 独自のシステムで十分です、なぜわざわざ神と戦う必要がありますか。
// あなたのコメントは実に良いものです。ため息、IEのせいで可哀想だ~~~
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート