6

documentJavascriptのオブジェクトに追加できるかどうか疑問に思いました。好き:

var document = {
    name: "My Name"   
}
  • それはJavaScriptで合法ですか?
  • もしそうなら、それは「良い習慣」と見なされますか、それとも私はそれを避けるべきですか?
  • それを変数として定義した場合、それはJS DOMオブジェクトではなく、一意のオブジェクトと見なされますか?

私はJavaScriptを初めて使用するので、助けていただければ幸いです。

編集:

コメントで会話し、もう少し考えた後、document変数を操作しdocumentて通常の使用に使用できるかどうかを本当に知りたいと思います。

4

6 に答える 6

21
  • はいできます
  • いいえ、そうすべきではありません

documentglobal/windowオブジェクトのもう 1 つのプロパティです。スコープ内で仮パラメーターまたは変数として宣言すると、ルックアッププロセスは、宣言したスコープ内で最初にその名前と一致するため、少しオーバーラップします。

とにかく、あなたはそれをしたくないのに、どうしてするのですか? あなたとあなたのコードを見ている他の人にとってはとても混乱します。その非常に悪い習慣です。

実際、これが、ほとんどの「高度な」JavaScript スニペット/ライブラリが、次のようなクロージャ関数スコープで始まる理由です。

(function( window, document, undefined ) {
    // window will always reference the "window" object that got originally passed in
    // document will always reference the "document" object that got originally passed in
    // undefined will always reference the "undefined value" that got originally passed in
}( window, window.document ));

..念のために言っておきますが、いわゆるケツ効果です。そのようなクロージャーがファイルの最上部で開いている場合、天才がそれらを上書き/オーバーラップする素晴らしいアイデアを持っていた場合に備えて、元のオブジェクトを参照するようにします。

結論: もちろん、自由に変数の名前を選択することはできますが、明らかな理由からwindowdocument、などのような有名な名前を実際に使用するべきではありません。undefined

于 2013-01-17T00:20:00.723 に答える
6

あなたがしていること、つまりdocumentオブジェクトへの追加は、コードが実際に行っていることではありません。

あなたしていることは再定義 documentです。追加する場合は、次を使用します。

document.name = "My Name"

この方法で、引き続き使用できますdocument。ただし、これは一般的に悪い習慣です。ドキュメントの代わりに別のオブジェクトを使用できます。

myObject = {name:"My Name"};

それからmyObjectまだグローバルです。オブジェクトを変更すると、document残念な副作用が生じる可能性があります。

于 2013-01-17T00:24:21.227 に答える
3

コメントで示したように、ECMAScript 仕様の第 15 章は、どのオブジェクトが組み込みであるかを示しています。documentそれらの1つではありません。

DOMElementこれは、そのコンテキストで Javascript を使用するときに Web ブラウザーによって設定される単なる変数であり、そのため、オブジェクト、または他の種類のオブジェクト、または好きなもので心ゆくまで上書きすることができます。

ただし、これはすべての明白な理由から悪い考えです。

おそらくそれほど混乱することなくオブジェクトにプロパティを追加できdocumentますが、これを行う理由はまだ思いつきません。

于 2013-01-17T00:22:10.197 に答える
3

JS または特定のブラウザーですぐに使用できる任意のオブジェクトを拡張または変更できます。

偶数: var Object = { name: "Trevor" }; console.log(オブジェクト);

ログ: オブジェクト {name: "Trevor"} ですが、ほとんどすべてが JS のオブジェクトで構成されています。

いいえ、しかし、ひどい練習です。

于 2013-01-17T00:22:46.377 に答える
2

document 変数は、(ある意味で) 現在表示しているページを表すグローバル変数です。

javascriptの予約済みキーワードには含まれていませんが、そのように使用しないでください。ドキュメント オブジェクトをオーバーライドできるため (ここを参照) (ただし、しようとしているほど単純ではありません)、参照をオーバーライドします。古いものに行き、悪い時間を過ごします。

はい、できますが、すべきではありません。それは悪い習慣です。別の名前を選ぶようにしてください。そうすれば、あなたのコードを引き継ぐ誰かが迷子にならないように (またはあなたに腹を立てることもありません!)、

于 2013-01-17T00:27:16.810 に答える
1

この記事を読むことはできますが、お勧めできません。

誤って上書きすることができます。必要なパフォーマンス オーバーヘッドを増やすことができます。また、ブラウザによって動作が異なるため、注意が必要です。

于 2013-01-17T00:21:56.070 に答える