2016-11-03 4 views
1

私はちょうどJohn Resig's Array.remove()機能を発見しました。 [自分のサイトがbbコードを正しく解析していないために読みにくいように見える]Javascript Array.remove()by John Resig - なぜfor-in文で列挙されますか?

問題はありますが、問題は、すべての配列のfor-in文で 'remove()'メソッドが列挙されていることですコードをロードした後

var a = ["a", "b", "c"]; 
for (i in a) 
{ 
    console.log(i); 
} 

そして、あなたが得る::

例えば、彼のコードを付加した後、これを行う

0 
1 
2 
remove 

なぜない他のすべての組み込みのプロパティやArrayオブジェクトのメソッド列挙し、remove()メソッドのこのような事態を防ぐための方法はありますか?

Here's a jsfiddle...

+0

ブログ記事は、ほぼ9年前のものです。古代です。あなたがそれがまだ関連しているという確認を得るまで、JavaScriptから何かに注意を払ってはいけません。 – Pointy

+0

@Pointy今、配列要素を削除するより良い方法がありますか? –

+0

コードは悪くありませんが、ポイントは過去9年間にたくさんのことが変わったということです。 Resig氏は今でも同じコードを書くつもりはないと思う。 – Pointy

答えて

2

あなたは、メソッドを追加するObject.defineProperty()を使用することができます。デフォルトでは「可算」フラグが、それは表示されません。つまり、プロパティのオフを回したままにします

Object.defineProperty(Array.prototype, "remove", { value: function() { ... } }); 

for ... inループ内にあります。

+0

これはまさに私が探していた答えです。ありがとう!真剣に、より良い/推奨の「削除」機能を知っていれば、それについて知りたいです。奇妙なことに、この機能はまだJSに追加されていません。それはかなり明白で一般的なものです。 –

+0

更新されたフィドルが表示されます。https://jsfiddle.net/dghm4mrL/1/ –

+0

https://javascriptweblog.wordpress.com/2011/01/04/exploring-javascript-for-in-loops/ –

関連する問題