这让我发疯,因为我在Google上找不到任何东西。也许是因为我不知道正确的搜索术语。但这就是我想要做的。
我想创建一个像对象一样的函数。我认为它被称为方法,但我可能是错的。
检查一下,这是我希望它做的一些伪代码。
function myMethod(){
var p = this.getAttribute('x');
var p = p+1;
return p;
}
function otherFunction(){
var q = document.getElementByID('Element').myMethod();
alert(q);
}
所以,我无法让它发挥作用。它一直说myMethod()
是undefined
而不是函数。
答案 0 :(得分:4)
如果您希望myMethod
在元素上可用,则必须将其附加到元素'原型。
Element.prototype.myMethod = myMethod;
prototype
的概念很大,但它归结为这样一个事实:函数实例的功能可以像你描述的那样“对象”。
在这种情况下,页面上的任何元素都是Element
函数的实例。因此,任何元素都可以使用.myMethod
,您可以调用它。 (Element
是一个函数,虽然你没有真正处理它 - 实例是可用的,因为你把它们放在HTML中,所以你绕过Element
。)
其次,如果你有var p
,那么另一个var p
没有多大意义。只需使用p = p + 1
或p++
(添加一个的快捷方式)。
答案 1 :(得分:1)
function myMethod(element){
var p = element.getAttribute('x');
var p = p+1;
return p;
}
function otherFunction(){
var q = myMethod(document.getElementByID('Element'));
alert(q);
}
显然,最好不在全局范围内声明这些,但基本上是javascript正在寻找一个myMethod()
,它是您正在选择的DOM元素的成员,但您实际上已经声明了功能独立。
另一个选择是通过原型继承添加方法。