【问题标题】:Working with objects and creating methods in JavaScript that return values在 JavaScript 中使用对象并创建返回值的方法
【发布时间】:2011-09-16 20:30:13
【问题描述】:

这让我发疯了,因为我在 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 而不是函数。

【问题讨论】:

  • 您是否尝试在使用 document.getElementById() 找到的“元素”上调用 myMethod?

标签: javascript object methods


【解决方案1】:

如果您希望 myMethod 在元素上可用,则必须将其附加到元素的 prototype

Element.prototype.myMethod = myMethod;

prototype 的概念很大,但归根结底是函数实例有一个可用的函数,就像你描述的“像一个对象”。

在这种情况下,页面上的任何元素都是Element 函数的实例。因此,任何元素都会有.myMethod 可用,您可以调用它。 (Element 是一个函数,尽管您并没有真正处理它 - 实例是可用的,因为您将它们放在 HTML 中,因此您可以使用 Element 绕过。)

其次,如果你有var p,那么另一个var p 没有多大意义。只需使用p = p + 1p++(添加一个快捷方式)。

【讨论】:

  • Element 和 HTMLElement 接口(以及其余接口及其原型)未在 IE7 及以下版本中公开,可能需要注意。
【解决方案2】:
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 元素的成员,但您实际上已经声明了该函数一个人。

另一种选择是通过原型继承添加方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 2015-12-30
    • 1970-01-01
    • 2023-03-31
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多