将一个方法中的值传递给另一个方法

时间:2017-10-27 06:25:56

标签: javascript object methods javascript-objects

在一个方法中创建的值可以通过调用在另一个方法中使用但在我的情况下我得到一个错误。请指教

(function() {
      var s = {
        appendToFilter: function(bread, value) {
          console.log(bread); // value is 20
          console.log(value); // value is 40
          return value; // Need this value
        },
        //Append to container in order to render filters
        appendToContainer: function(container, v, state) {
            // I need the value returned in appendToFilter here
            // I tried using global variable and tried to call appendToFilter here, no luck
            // since it depends on flow of the methods is there any work around to get the value
        },  

        getToFilter: function(value) {
          var x = 20;
          var y = 40;
          s.appendToFilter(x,y);
        }
      }

    });

2 个答案:

答案 0 :(得分:0)

只需在函数外面声明一个全局变量。你可以在任何地方访问它。

var newVal;
(function() {

      var s = {
        appendToFilter: function(bread, value) {
          console.log(bread); // value is 20
          console.log(value); // value is 40
          newVal=value;
          return value; // Need this value
        },
        //Append to container in order to render filters
        appendToContainer: function(container, v, state) {
            console.log(newVal);
        },  

        getToFilter: function(value) {
          var x = 20;
          var y = 40;
          s.appendToFilter(x,y);
        }
      }

    });

答案 1 :(得分:0)

(function() {
      var s = {
        appendToFilter: function(bread, value) {
          console.log(bread); 
          console.log(value);
          return value; 
        },
        //Append to container in order to render filters
        appendToContainer: function(container, v, state) {
            var value = s.appendToFilter(10, 20); // call it as you used it getToFilter function
    console.log(value)

        },  

        getToFilter: function(value) {
          var x = 20;
          var y = 40;
          s.appendToFilter(x,y);
        }
      }

    });