JavaScript で一部の属性名が二重アンダースコアで始まるのはなぜですか? 質問する

JavaScript で一部の属性名が二重アンダースコアで始まるのはなぜですか? 質問する

JavaScript の一部のオブジェクトの属性が二重のアンダースコアで始まっているのがわかります。たとえば、__defineGetter__または__defineSetter__または のようなもの__proto__です。これは ECMAScript 仕様で定義された規則ですか? それとも、開発者コミュニティの規則にすぎないのでしょうか?

ベストアンサー1

これらはプロパティです特定のブラウザによって定義されるそしてECMAScriptでは定義されていない

したがって、名前の衝突は避ける必要があります。プロパティ を呼び出した場合defineGetter、Web サイトのコードですでに同じ名前のプロパティが定義されていないという保証はなく、多くの問題が発生します。ただし、2 つのアンダースコアを追加することは、ブラウザー固有のプロパティを定義するための事実上の方法になっています (一部の Web サイトがこの規則を使用する可能性は低いため)。

他のブラウザが他のブラウザと同じ命名規則 ( の使用など) を使い始めていることに気付くかもしれません__proto__が、それでもすべてのブラウザ間で普遍的に保証されているわけではありません (たとえば、IE は を定義していません__proto__ property)。

また、「システム定義」の識別子(プログラマ定義の識別子ではなく)に2つ​​のアンダースコアを使用するという慣習は、かなり昔に遡るので、その慣習がいつ「始まった」のかはわかりません。少なくともC++(http://en.wikipedia.org/wiki/名前マングリング#簡単な例

おすすめ記事