JS類定義の原型方法の2つの実現の違いについてのコメントが多いです。


JavaScript類に原形を付ける方法は簡単であることを知っています。また、よく使われているのは次の2つの方法ですが、この2つの方法には違いがありますか?     JScript クラス: 

 function JSClass() 
 {       
 } 
    Extens プロトタイプ method: 

 JSClass.prototype.MethodA = function() 
 { 

 }; 
    Or  

function = JSClass.prototype.MethodA() 
 { 

 };
菵 re: JS類定義モデル方法の2つの実現の違い  返信  コメント     まず簡単な違いを言います。この2つの方法が導入したプロトタイプの方法は、最初は匿名の方法です。第二の方法は方法名「JSClass.prototype.MethodA」があります。  2005-03-01 10:52 | バードショット  # re: JS類定義モデル方法の2つの実現の違い  返信  コメント       <スクリプト>  機能 JSClass()  {  }  機能 = JSClass.prototype.MethodA()  {  };      ヒントが間違っています。  2005-03-01 13:51 | チェット  # re: JS類定義モデル方法の2つの実現の違い  返信  コメント     faint,Free TextBoxが少量のデータ(1文字か2文字)を修正して提出すると効果がない場合があります。  それは手を間違えて「=」と書きましたが、修正したのを覚えています。  2005-03-01 14:00 | バードショット  # re: JS類定義モデル方法の2つの実現の違い  返信  コメント          実はこの二つの原形の定義方式は簡単に説明できます。まずそれらを二つの関数として見て、次のようにします。  Foo 1()    機能 Foo 1()    {        alert('This is Foo 1.')    }      和   Foo 2()    var Foo 2 = function()    {        alert('This is Foo 2.')    }      最初の操作は間違いがないはずですが、二つ目の運行に問題があります。この時システムは「Microsoft」と言います。 JScript runtime error: Object expectedすなわち関数定義(Foo 1)は、シナリオ解析器の中で最も高い初期化優先度を持っています。これはよく分かります。処理関数を優先しないと、関数の関数呼び出しに対して処理ができなくなります。fn 1()を先に決めてfn 2()を定義しても、fn 1からfn 2を調整すれば、解決できなくなります。なぜFoo 2が初期化できないのか、Foo 2の定義は関数定義ではなく、標準的な割当文であり、標準関数のようにFoo 2(Foo 2()が使えるのかは、関数オブジェクトの実例を指すからです。2005-03-03 22:17 | バードショット  # re: JS類定義モデル方法の2つの実現の違い  返信  コメント          また、原形法導入の2つの方法を見れば、簡単です。また、異なる優先順位を実行しても、それらの使用における違いを決定しています。以下の例を参照してください。 laguage=「javascript」function NormalClass()  {      this.m_Propty 1 = 'P 1 in Normal クラス      this.m_Propty 2 = 'P 2 in Normal クラス      this.toString = function()      {           return '[クラス NormalClass';      }     return new Inneraclass()        機能 インナークラス()      {           this.m_Propty 1 = 'P 1 in Inner クラス            this.m_Propty 2 = 'P 2 in Inner クラス            this.toString = function()           {                return '[クラス インナークラス           }          }     Inneraclass.prototype.Method 1 = function()      {           alert(this.m_Property 1)      };      機能 Inneraclass.prototype.Method 2()      {           alert(this.m_Property 2)      };    }      実行:  var nc = new NormalClass();  nc.Method 1()  nc.Method 2()     何の効果ですか?なぜですか?  2005-03-03 22:21 | バードショット  # re: JS類定義モデル方法の2つの実現の違い  返信  コメント     結局、nc.Method 1()が定義されておらず、nc.Method 2()が正常に動作します。実はおかしくないです。Inneraclass.prototype.Method 1 = function()は、割り当てられた語句の実行に依存し、 機能 Inneraclass.prototype.Method 2() スクリプトエンジンによって最高優先で初期化されます。  2005-03-05 02:43 | バードショット  # re: JS類定義モデル方法の2つの実現の違い  返信  コメント     私はAntechinaにいます JavaScript Editorはあなたのコードをテストします。  機能 Inneraclass.prototype.Method 2()エラーを報告しました。  SyntaxErrror:missing before formal parameters See: .prototype.Method 2(  2005-05-10 17:11 | エロエロ  # re: JS類定義モデル方法の2つの実現の違い  返信  コメント     @エロエロ  IEで試したことがありますか?  2005-05-10 17:30 | バードショット  # re: JS類定義モデル方法の2つの実現の違い  返信  コメント     FFを使っても同じエラーです。 missing before formal parameters See: .prototype.Method 2(  2006-08-19 22:40 | jzz  # re: JS類定義モデル方法の2つの実現の違い  返信  コメント     return new Inneraclass() この行を移してください  機能 Inneraclass.prototype.Method 2()  {  alert(this.m_Property 2)  };  後のieは正常を実行します。FFはエラーを報告します。 missing before formal parameters See: .prototype.Method 2(  ieはアンオーダーで実行されていますが、NSシリーズは違います。  FFはfunctionに実行しています。 Inneraclass.prototype.Method 2() この時はこのInneraclass類があることを全然知らなかったので、当然理由もなくprototype.xxxの東に来てはいけません。  2006-11-13 00:57 | Dutu  # re: JS類定義モデル方法の2つの実現の違い  返信  コメント     @Dutu  returnを返す new Inneraclass()functionにセットする Inneraclass.prototype.Method 2()この方法はその後、私がこの例を作る目的に完全に違反しました。この例はちょうど、IE対functionを説明しています。 foo()という関数は、フォーマットを定義するとより高い解析優先度がありますが、fooは = function()は普通の割当語句です。ffの状況については研究したことがありません。あなたがffがreturn後のInneraclassが見つからないと言った以上、手順の解析functionだと説明します。 これはまだ定義されたフォーマットです。  2006-11-13 01:29 | バードショット  # re: JS類定義モデル方法の2つの実現の違い  返信  コメント     えっと、かわいそうにieしか使えない人ですね。 機能 x.y.z() {} の書き方は根本的に標準的ではない書き方です。ieだけがサポートしています。他のjsエンジンの中では、ffやoperaなどが間違っています。標準に合う書き方は x.y.z = 機能 () {}; もちろん、文法的にはこのような書き方が好きです。これからの標準でこのような書き方を採用したいです。  2006-11-28 11:04 | hax  # re: JS類定義モデル方法の2つの実現の違い  返信  コメント     へへ はい、そうです。 ieだけが母親のように子供の様々な過ちを受け入れます。  標準的な書き方は x.y.z = 機能 () {};  実は、ieはもっと怪しい書き方をサポートしています。  これを見てください  機能 window::onload(){  alert(「go_」rush')  }  2006-11-28 14:39 | ゴウRush  # re: JS類定義モデル方法の2つの実現の違い  返信  コメント     @hax  標準は更に良くて、人となりのサービスので、これが学院派と工事派の間の事なことを論争して、私達は私達の自分の系統をよく実現してすみます。  // あなたのコメントはとてもいいです。Sigh、残念ながらIEのせいで、かわいそうです。