Próbuję pasowana Element.prototype.children
który powinien zwrócić HTMLCollectionstworzyć HTMLCollection
Jednak
var h = new HTMLCollection();
//TypeErrror: HTMLCollection is not a constructor
i
var h = Object.create(HTMLCollection.prototype);
h[0] = div;
h.item(0);
// Could not convert JavaScript argument
test Firefoksa 7 i Chrome
Oprócz przyciemniania HTMLCollection
jest jakikolwiek sposób na interakcję z nim?
zapewniają także opinię na temat this github issue czy można zaproponować rozwiązanie
Wierzę, że właściwym sposobem na to jest zdefiniowanie własnego niestandardowego konstruktora 'MyHTMLCollection', a następnie użycie go zamiast konstruktora hosta' HTMLCollection' (który nie jest niezawodny) –
Chociaż nie mogę odpowiedzieć na twoje konkretne pytanie dotyczące HTMLCollection, ogólnie uważa się za złą praktyką rozszerzanie natywnych obiektów DOM (hostowanych). Zobacz ten artykuł, aby uzyskać szczegółowe wyjaśnienie, dlaczego: http://perfectionkills.com/whats-wrong-with-extending-the-dom/ – skyline3000
@ skyline3000 Doskonale zdaję sobie sprawę z konsekwencji. Musimy to zrobić, aby wygenerować DOM-shim. Nie rozszerzamy DOM o niestandardowe metody (zło), ale o metody, które powinny istnieć zgodnie ze specyfikacją DOM4. – Raynos