1

私は JavaScript に不慣れで、次の構文で変数を作成できることを発見したとき、JavaScript をいじっていました。

document.foo = 'bar'.

私が言えることから、それの利点は、次のようなことをするときです:

if (document.foo)
     do something;

変数がまだ開始されていない場合、インタープリターは例外をスローしません。

私が知らないが知りたいのは、このような変数を作成するための用語が何と呼ばれているかです。グローバル変数か、メンバー変数か、新しい型か。また、この方法で変数を作成したくない理由があるかどうかも知りたいです。

そのため、グルのアドバイスを求めている人は誰でも歓迎します。

4

2 に答える 2

1

Javascript には、primitive数値、文字列、ブール値などの値があります。Javascript の他のすべてはobject.

オブジェクトには のようなプロパティがあり、 のようmy_array.lengthなメソッドがありますmy_array.pop()

Javascript では、いくつかの例外を除いて、メソッドとプロパティをかなり自由に追加できます。

今 -- こすれがあります --

、など、native objectsJavascript 環境自体によって提供されるものがあります。ObjectArrayNumber

次にhost objects、Javascript が実行されているシステムによって提供されるものがあります。ブラウザーでは、ホスト オブジェクトにはdocument、いくつかの可能な他のオブジェクトが含まれています。

いじくり回すと、host object失敗する可能性があります。すべての賭けが無効になります。非常に標準化され公開された方法以外でそれらをいじることは、非常に悪い習慣と見なされます。

正直なところ、varあなたの変数だけです。必要に応じて、ある種のoptions変数を作成し、その中のプロパティを自由に変更できます...次のようになります。

var options = {};

options.foobar = true;

if (options.foobar) {
  alert("You have chosen a Foobar! Congrats");
}

if (!options.fizzban) {
  alert("You have not chosen to play cards with Captain Kirk");
}
于 2012-09-15T19:19:35.447 に答える
0

短い答え: 用語は暗黙の宣言です。

少し誇張された答え: そのように変数を作成することは完全に合法ですが、オブジェクト指向プログラミングとソフトウェアを文書化する機能に適用すると、いくつかの欠点があります。

実行時にオブジェクトの構造が異なる場合、ソフトウェアの状態を予測するのが非常に難しくなり、コードの保守がますます難しくなります。

私のアドバイスは次のとおりです。ある種の継承モデルを使用するか、javascripts プロトタイプ アーキテクチャを使用して、事前に宣言 (および賢明な既定値を設定) します。これにより、文書化が容易になり、ソフトウェアの目的のメンタル モデルを確認する機会も得られます。

JS 継承の適用に関する優れた紹介は、ここの john resig から入手できます: http://ejohn.org/blog/simple-javascript-inheritance/

于 2012-09-15T19:23:37.257 に答える