正确扩展DOM [关闭]

问题描述 投票:0回答:1

我想创建一个自定义方法,该方法将在每个HTML DOM对象内可用。我通过对“ Element”对象进行原型设计获得了预期的结果,但是,据我所读,这可能会导致很多问题。根据我的阅读,建议使用对象包装器。我该怎么做?

Element.prototype.myOwnMethod = function(param){
   console.log(`${this} : ${param}`);
}
document.body.myOwnMethod('abc');
//[object HTMLBodyElement] : abc
javascript dom methods prototype extending
1个回答
1
投票

[检索元素时,您可以首先调用一个函数,该函数返回一个既包含元素您的自定义函数的对象,而使基本元素保持不变,如下所示:

const setText = function(newText) {
  this.elm.textContent = newText;
}
const selectElement = selector => {
  const elm = document.querySelector(selector);
  return { elm, setText };
}

const a = selectElement('#a');
const b = selectElement('#b');

a.setText('123');
b.setText('456');
a.elm.style.color = 'green';
<div id="a">abc</div>
<div id="b">def</div>
© www.soinside.com 2019 - 2024. All rights reserved.