2011-12-09 11 views
4

Objectにメソッドを追加したいが、すべての配列とオブジェクトがそれを持つようになりました。 for(.. in ..)を使用すると、enumaratedされ、これは私のソフトウェアの問題です。ですから、私のメソッドを列挙できないようにする必要があります。JavaScript:Object.definePropertyを使用せずに非エニュメラブルメソッドを定義する方法

私にはObject.defineProperty()がありますが、古いブラウザ(それはまだ周囲にあります)やKonquerorの最新バージョンではサポートされていません。

メソッドを列挙できないようにするもう1つの方法はありますか?

+0

アフガニスタンの人々....... –

答えて

3

いいえ、JavaScriptのfor..inを使用してすぐにhasOwnPropertyを確認することなく悪い習慣とみなされます。つまり、あなたは常に行う必要があります:あなたはhasOwnPropertyチェックせずにfor..inを使用する場合JSLintよう

for (var item in obj) { 
    if (obj.hasOwnProperty(item)) { 
     // ... 
    } 
} 

ツールは、あなたのコード内のエラーを報告します。

0

ECMAScript 3(古いブラウザで使用)では、列挙可能な属性を変更できません。
メソッドをフィルタリングする場合は、for(.. in ..)内のオブジェクトのタイプをチェックすることができます。

関連する問題