Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将myFunction(elem)更改为elem.myFunction()?_Javascript - Fatal编程技术网

Javascript 如何将myFunction(elem)更改为elem.myFunction()?

Javascript 如何将myFunction(elem)更改为elem.myFunction()?,javascript,Javascript,我今天想知道javascript函数。我知道jQuery是一个javascript库,可以对带点的元素调用函数。javascript有时也会做同样的事情(比如:.toFixed()) 使用常规javascript函数也可以这样做吗?所以我通常会做的是: Example regular way: var elem = document.getElementById('elem'); function doSomethingToElement(elem){ ...do something to

我今天想知道javascript函数。我知道jQuery是一个javascript库,可以对带点的元素调用函数。javascript有时也会做同样的事情(比如:
.toFixed()

使用常规javascript函数也可以这样做吗?所以我通常会做的是:

Example regular way:
var elem = document.getElementById('elem');
function doSomethingToElement(elem){
   ...do something to elem here...
}
doSomethingToElement(elem);
如果我想用elem.function()符号以不同的方式调用函数,该怎么办?比如:

elem.doSomethingToElement();
  • 有人能给我举个例子说明如何做到这一点吗?
  • 旁注:关于使用这种符号的优点和缺点的一些考虑也很有趣。
是,仅扩展元素。原型:

您可以像这样使用它:

document.body.log();
是,只是扩展了Element.prototype:

您可以像这样使用它:

document.body.log();

为了做到这一点,您需要封装或在JavaScript中调用它——一个作用域

您可以创建一个代理来保存元素,然后在其上创建一些函数:

function ElementHolder(elem){
   this.elem = elem;
}

ElementHolder.prototype.doSomethingToElement = function(){
    //your code on this.elem
}
使用它:

var elemHolder = new ElementHodler(document.getElementById('elem'));
elemHolder.doSomethingToElement ()

为了做到这一点,您需要封装或在JavaScript中调用它——一个作用域

您可以创建一个代理来保存元素,然后在其上创建一些函数:

function ElementHolder(elem){
   this.elem = elem;
}

ElementHolder.prototype.doSomethingToElement = function(){
    //your code on this.elem
}
使用它:

var elemHolder = new ElementHodler(document.getElementById('elem'));
elemHolder.doSomethingToElement ()

你可以按照@jonas-w的建议去做。我可以补充:

答案的关键是你这里的
elem

var elem = document.getElementById('elem');
$(“#elem”)

后者是一个jQuery对象,拥有所有这些很酷的jQuery方法。前者是普通DOM元素。如果您想要创建对象并定义可以使用点符号在对象上调用的方法,您应该进行一些阅读,例如,在他们提供此示例的地方:

function Person(name) {
    this.name = name;
    this.greeting = function() {
        alert('Hi! I\'m ' + this.name + '.');
    };
}
而且解释得比我好得多。本质上,Person函数是类的Javascript等价物。您创建类定义(可以这么说),然后实例化该类的实例(或对象),并使用点表示法对它们调用方法。因此,

person = new Person("Bob");
person.greeting();
还有一种单例方法,例如

myObject = {
    foo : function() { /* do something */ }
}
然后您可以说
myObject.foo()


希望这能有所帮助。

你可以按照@jonas-w的建议去做。我可以补充:

答案的关键是你这里的
elem

var elem = document.getElementById('elem');
$(“#elem”)

后者是一个jQuery对象,拥有所有这些很酷的jQuery方法。前者是普通DOM元素。如果您想要创建对象并定义可以使用点符号在对象上调用的方法,您应该进行一些阅读,例如,在他们提供此示例的地方:

function Person(name) {
    this.name = name;
    this.greeting = function() {
        alert('Hi! I\'m ' + this.name + '.');
    };
}
而且解释得比我好得多。本质上,Person函数是类的Javascript等价物。您创建类定义(可以这么说),然后实例化该类的实例(或对象),并使用点表示法对它们调用方法。因此,

person = new Person("Bob");
person.greeting();
还有一种单例方法,例如

myObject = {
    foo : function() { /* do something */ }
}
然后您可以说
myObject.foo()


希望这有帮助。

正是您所需要的。通过修改Dom节点元素的原型,可以向其添加函数。jQuery将HTML元素(和其他内容)包装到自己的对象中。不建议直接扩展
HTMLElement
之类的
elem
,因为它不能保证向前兼容。要在您自己的对象上定义一个方法,只需定义一个带有方法的对象:
constmyobj={elem:document.getElementById(“elem”),doSomethingToElement(){this.elem.
…something…
;}
。对于那些对这个问题感兴趣的人,我可以推荐谷歌搜索“方法”。方法是可调用的对象属性,可以像函数一样调用。这些方法中使用的
this
关键字将引用该方法绑定到的对象。这就是你需要的。通过修改Dom节点元素的原型,可以向其添加函数。jQuery将HTML元素(和其他内容)包装到自己的对象中。不建议直接扩展
HTMLElement
之类的
elem
,因为它不能保证向前兼容。要在您自己的对象上定义一个方法,只需定义一个带有方法的对象:
constmyobj={elem:document.getElementById(“elem”),doSomethingToElement(){this.elem.
…something…
;}
。对于那些对这个问题感兴趣的人,我可以推荐谷歌搜索“方法”。方法是可调用的对象属性,可以像函数一样调用。这些方法中使用的
this
关键字将引用该方法绑定到的对象。