使用其他函数修改函数的私有变量

时间:2015-08-24 10:58:59

标签: javascript

给出以下功能:

function countdown() {
  var result = "";

  // do something with the result variable

  return result;
}

如何在调用倒计时功能之前从另一个函数中更新result变量?

function something(){
   // update private variable "result"
}

3 个答案:

答案 0 :(得分:1)



function countdown(modifiedResult) {
  var result = "";

  // do something with the result variable
  result = modifiedResult;

  return result;
}


function something(modifiedResult){
  // update private variable "result"
   var updatedResult = countdown(modifiedResult);
   alert(updatedResult);
}
something("I am updated value");




答案 1 :(得分:0)

变量结果是私有的,无法从外部访问。 一种解决方案是将整个工件包装在工厂中:

function countdownFactory () {
  var result = 0;//since its named countdown i assumed it should be a number
  return {
   get: function () { return countdown},
   set: function (value) {countdown = value}
  };
}

要使用此功能,您可以:

var countdown = countdownFactory();
countdown.set(2);
countdown.get() // returns 2

答案 2 :(得分:0)

闭包应该这样做,但你需要一些访问该功能。在这种情况下,它是countdown.setResult(),它将值设置为私有变量result

var countdown = function () {
    var result = '';
    function countdown() {
        return result;
    }
    countdown.setResult = function (r) {
        result = r;
    };
    return countdown;
}();

function something(){
    countdown.setResult(42);
}

alert(countdown()); // empty string
something();        
alert(countdown()); // 42