HTAでArray.prototype.slice.call(NodeList || HTMLCollection)が使えませんでした

配列のようなものを配列にする手法として[].slice.callがありますが、HTAでNodeListやHTMLCollectionに対して使えませんでした。

検証HTA

<!doctype html><title>a</title>
<body onload="alert([].slice.call(document.body.childNodes))"><p><p>

結果

Array.prototype.slice: 'this'は JavaScript オブジェクトではありません。

argumentsや{length:1,0:0}に対しては使えたので、DOMの配列もどきが使えないということみたいです。HTAだけの現象で、IEでは問題ありません。

代替策

Array.prototype.concat.apply([], NodeList || HTMLCollection)は動きました。

2016年1月12日 追記

<meta http-equiv="X-UA-Compatible" content="IE=9">

上記タグを含めるとエラーが起きなくなりました。エラーが起きた原因は、もともとIE8以前では[].slice.call(NodeList || HTMLCollection)が使えず、HTAではIE7互換になるからだったようです。