Как добавить новый метод Nodelist / HtmlColection по прототипу? - PullRequest
0 голосов
/ 07 марта 2012

И typeof document.querySelectorAll('a'), и document.getElementsByTagName('a') - это Объект , поэтому я не могу добавить метод следующим образом:

        Object.prototype.method = function(){ alert(this); }

Но эта работа:

        a = document.getElementsByTagName('a');
        a.__proto__.__proto__.method = function(){ alert(this); }
        a.method();//object HTMLCollection

Я думал a.__proto__ == a.constructor.prototype, не так ли?

1 Ответ

0 голосов
/ 07 марта 2012

Возможно использование Object.prototype. Однако я не рекомендую возиться с этим.

instance_of_my_object = document.getElementsByTagName ('a'); - это отдельный экземпляр вашего объекта. В этом случае instance_of_my_object является NodeList.
instance_of_my_object.method = ... присоединяет ваш метод или переменную к этому единственному экземпляру NodeList.

Если вы хотите присоединить какой-либо метод ко всем экземплярам класса, вы можете использовать прототип (например: className.prototype.myMethod = function () ... ).

...