【问题标题】:Getting the value in one method to the other method将一种方法中的值获取到另一种方法中
【发布时间】:2018-04-08 16:27:19
【问题描述】:

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

(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);
        }
      }

    });

【问题讨论】:

    标签: javascript object methods javascript-objects


    【解决方案1】:

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

    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);
            }
          }
    
        });
    

    【讨论】:

    • 这不起作用,因为需要方法调用
    • 您是否尝试在“var s”中添加新变量然后尝试使用它?像 'var s = { newVal : null, appendToFilter : function(){}}'
    • 你能不能,在getToFilter中返回y并在appendToContainer函数中调用getToFilter。喜欢appendToContainer: function(container, v, state) { var obj1 = getToFilter(); console.log(obj1); }, getToFilter: function(value) { var x = 20; var y = 40; s.appendToFilter(x,y); return y; }
    【解决方案2】:
    (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);
            }
          }
    
        });
    

    【讨论】:

    • 我得到一个未定义的值,用这个 sn-p
    • 你能告诉sn-p你是如何调用上述函数的吗
    猜你喜欢
    • 1970-01-01
    • 2013-02-10
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多