CrockfordのThe Good Partsの本は、JavaScript配列が実際にオブジェクトであることを伝えています。オブジェクトごとに呼び出す
これを考えると、なぜこれは機能しませんか? (そして、それを期待ため、私は奇妙なのですか?)
arr={0:'a', 1:'b', 2:'c', 3:'d'}
Array.prototype.forEach.call(arr, function(el){console.log(el)})
私の思考:配列は、おそらく、キーの昇順で配列のプロパティを通じてforEach
ループのようなメソッドオブジェクトである場合。 (そして、call
を通して、メソッドが動作するthis
を設定することができます)。私はそれが[].forEach.call(NodeList)
の理由であると仮定しています。
あなたは 'length'プロパティを忘れました。 'length:4' https://jsfiddle.net/19to1oy6/ –
@squintああ、私は' arr.length = 4'でした。ありがとう! –
ようこそ。 –