【问题标题】:Pass vars to other method javascript将 vars 传递给其他方法 javascript
【发布时间】:2015-12-20 13:57:09
【问题描述】:

我想将 var "firstWord" 中保存的值从一种方法传递到另一种方法。

var obj = {

    getWords: function () {

        var words = [];

        $('input').each(function () {
            words.push($(this).val());
        });

        var firstWord  = words[0],
            secondWord = words[1],
            thirdWord  = words[2];

    },

    pushWords: function () {

        Array.prototype.insert = function (index, item) {
            this.splice(index, 0, item);
        };

        var fruits = ["Banana", "Orange", "Apple", "Mango"],
            randomPosition = (Math.floor(Math.random() * (5 - 2 + 1)) + 1);

        fruits.insert(randomPosition, firstWord);


        $('body').append(fruits);
    }

};

可能我的代码有点错误,但在这种情况下有没有可能这样做?

【问题讨论】:

    标签: javascript jquery inheritance


    【解决方案1】:

    如果您使用 var 关键字声明变量,则它仅在函数中可用。把它放在一边,你就会有一个全局变量,你也可以从其他函数中访问它。 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var)

    【讨论】:

      【解决方案2】:

      将一个函数的值传递给另一个函数的一种方式,例如:

      function one(){
      var var1 = "hello";
      two(var1);
      }
      
      function two(x){
      alert(x);
      }
      

      这应该会为您打印“hello”。 另一种方法是将您的 firstWord 声明为全局变量。

      【讨论】:

        【解决方案3】:

        尝试返回如下数组,

         getWords: function () {
        
                var words = [];
        
                $('input').each(function () {
                    words.push($(this).val());
                });
        
               return words;
        
            },
        

        在推文中

            pushWords: function () {
        
                    var arr = this.getWords();
                    ................
                    ................
                    ................
                   fruits.insert(randomPosition, arr[0]);
            }
           $('body').append(fruits);
        

        由于 var firstword、secondword 和 thirdword 只能在 getwords 函数内访问,因此您必须尝试返回它。并且不要忘记验证 在使用它之前返回值。希望对你有帮助。。

        在此处查看示例https://jsfiddle.net/xz0ofkjx/

        【讨论】:

          【解决方案4】:

          所以让它成为对象的属性。

          var obj = {
          
            _words : [],
            
            setWords : function () {
               this._words = ["hello","world"];
            },
              
            pushWords : function () {
              this._words.push("foo");  
            },
              
            readWords : function () {
                console.log(this._words); 
            }
            
          }
          
          obj.readWords();
          obj.setWords();
          obj.readWords();
          obj.pushWords();
          obj.readWords();

          【讨论】:

            猜你喜欢
            • 2020-05-18
            • 2016-08-07
            • 2012-08-16
            • 1970-01-01
            • 1970-01-01
            • 2015-01-11
            • 2010-11-04
            • 1970-01-01
            • 2015-10-01
            相关资源
            最近更新 更多