создать метод для всех объектов, JS Vanilla? - PullRequest
0 голосов
/ 26 февраля 2019

Я хочу создать метод, который можно вызывать из любого объекта.

Я мог бы, например, создать следующий метод:

document.el=function(e){return this.getElementById(e);}

Теперь я могу вызвать:

document.el("myDiv") //returns <div id="myDiv"></div>

но я хотел бы сделать метод доступным для всех объектов, чтобы я мог вызвать:

document.body.el("myDiv") //returns document.body.el is not a function

Можно ли сделать его доступным для всех дочерних элементов документа?Может быть, через рекурсивный цикл?По сути, я ищу что-то вроде:

*.el=function(e)...

1 Ответ

0 голосов
/ 26 февраля 2019

Хотя вы, вероятно, не должны расширять DOM, вы можете сделать это, добавив метод к прототипу HTMLElement, например:

HTMLElement.prototype.el = function (id)  {
  return this.getElementById(id);
};
<div id='div-id'><p id='p-id'>Hello</p></div>
document.getElementById('div-id').el('p-id').innerText; // `Hello`
...