13

console.log($('some selector'))ブラウザで実行すると、配列のようなものが返されます (最初の行) :

Github プロジェクト ページの最新バージョンの chrome Web コンソールの画像

instanceof Arrayしかし、これはではなく、実際にjQueryobjectであることに注意してください。

するとconsole.dir($('h1'))、実際には jQuery オブジェクトであることがわかります。

問題は、Web コンソールで配列のように見せる方法です。ここの jQuery ソースで、いくつかの Array および Object メソッドへの参照が追加されていることに気付きました。ここtoArrayでは、オブジェクト(およびスライスなど) が追加されていjQueryます。Web コンソールは何らかの方法でこれらのメソッドをチェックしており、見つかった場合 ( toArrayindexOfsliceなど)、それを配列として出力しますか? などのカスタムオブジェクトからこの動作を取得したいと思いますEmber.ArrayProxy。現在、ログに記録するEmber.ArrayProxyと表示> Objectされるものなどですが、配列として表示するといいでしょう。

何か案は?

4

1 に答える 1

15

Array次のように、プロトタイプを使用してオブジェクトを継承させます。

function SomeType() {
    this.push(16);
}

SomeType.prototype = [];
SomeType.prototype.constructor = SomeType; // Make sure there are no unexpected results

console.log(new SomeType()); // Displays in console as [16]

もちろん、すべての jQuery オブジェクトはjQuery関数/コンストラクターのインスタンスであるため、jQuery はそのように機能します。おまけとして、継承により、 からすべてのメソッドを取得でき、Arrayそれに伴うインデックスも取得できます。

于 2012-05-26T02:09:13.917 に答える