【问题标题】:Trying to wrap this function in an object试图将此函数包装在一个对象中
【发布时间】:2014-06-11 20:03:39
【问题描述】:

抱歉含糊不清并让大家感到困惑,我感谢所有反馈,但让我解释一下我正在尝试做的事情。

我想用两个方法创建一个名为 Multiplier 的对象:multiply 和 getCurrentValue 乘以最初应该返回提供的数字 * 1 并且从那时起无论 当前值是提供的数字的倍数,getCurrentValue 应该返回最后一个 从乘法返回的答案。

大家好,我很难理解这个概念。

到目前为止,这是我的代码:

var multiplier = {

    function multiply(){

    alert("Input a number to be multiplied by 1")

    var a = prompt("Input your desired number");

    var b = a * 1;

        return alert(b);

    }

}

multiply();

任何帮助或进一步解释我将如何解决这个问题将不胜感激

【问题讨论】:

  • 好吧,你应该看看对象字面量语法:MDN - Working with Objects。这些东西你通常可以从教程中学到。
  • 像这样 -> jsfiddle.net/mF63S
  • 你的描述很模糊。你想使用原型吗?既然你提到了Multiplier 而不是multiplier

标签: javascript function oop methods


【解决方案1】:
var multiplier = {
    lastValue: null,

    getCurrentValue: function() {
        return lastValue;
    }, 

    multiply: function() {
        alert("Input a number to be multiplied by 1")
        var a = prompt("Input your desired number");
        var b = a * 1;
        lastValue = b;
        return alert(b);
    }
}

这应该做你想做的事。您正在定义一个名为 multiplier 的对象,它有两个函数和一个用于保存最后一个值的变量。

当然,还有其他方法可以做到这一点,但你的问题有点含糊。

一个更加面向对象的方法就是这样。

function Multiplier() {
    var lastValue = null;
    this.getCurrentValue = function() {
        return lastValue;
    };

    this.multiply = function() {
        alert("Input a number to be multiplied by 1");
        var a = prompt("Input your desired number");
        var b = a * 1;
        lastValue = b;
        return alert(b);
    }
}

使用这种方法,您的 lastValue 变量是私有的。您只公开了这两个功能。现在,您可以在需要时创建这些对象中的一个新对象,就像这样。

var myMultiplier = new Multiplier();

您可以像这样调用乘数上的函数。

myMultiplier.multiply();

【讨论】:

  • 啊啊啊,完美!!非常感谢!!
  • 没问题!祝你好运
猜你喜欢
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-02
  • 2012-11-15
  • 1970-01-01
相关资源
最近更新 更多