关于javascript:如何使一个函数去追求一个元素

How to make a function to go after an element

本问题已经有最佳答案,请猛点这里访问。

JavaScript中,您经常会看到函数,即document.getElementById("element").someFunction();$("element").someFunction();而不是someFunction($("element"));。其中someFunction(element)看起来有点像下面的代码。

1
2
3
someFunction(element) {
    //element.doSomething();
}

我的问题是,如何使一个函数操纵它所附加的元素,而不是操纵作为参数传递的元素?


你可以用原型来实现它

1
2
3
4
5
6
// `getElementById` returns a `Element` object so extend it's prototype
Element.prototype.someFunction = function(){
   // this.somethig
}

document.getElementById("element").someFunction();

1
2
3
4
5
Element.prototype.someFunction = function() {
  console.log(this.value)
}

document.getElementById("element").someFunction();
1
<input value="abc" id="element" />

注意:扩展本机对象的原型是非常糟糕的做法。


你在找prototypes

https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/object/prototype

1
2
3
element.prototype.someFunction = function(){
  this.doSomething(); // this refers to element
}