为所有对象创建方法,js vanilla?

时间:2019-02-26 11:05:02

标签: javascript function object methods children

我想创建一个可以从任何对象调用的方法。

我可以创建以下方法:

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 :(得分:2)

尽管you probably shouldn't be extending the 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`