从其他功能访问功能

时间:2020-09-02 13:46:53

标签: javascript

我有一个要从另一个函数访问的函数,但是遇到一个错误,告诉我该函数未定义。

我具有此功能来转换值

ngValue

如果我调用this.convertValue或convertValue,则会收到未定义的错误。这里有什么建议吗?

4 个答案:

答案 0 :(得分:0)

似乎两个函数都是正在定义的对象的一部分。因此,this不是该当前对象的引用。

您可以先定义convertValue函数,然后再定义该对象,然后不使用this关键字直接调用它。

    function convertValue (value, exchangeRate){
        return value * exchangeRate;
    }

如果由于代码的结构而无法执行此操作,则可以在此之前定义一个值为this的变量。像这样:

    const that = this;

然后使用that.convertValue(items[index].value, 0.861)

调用函数

以下是this工作原理的文档参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this

因此您可以相应地增强代码。

答案 1 :(得分:0)

由于您在代码中分配了that = this,因此我认为您可以使用that来访问函数。

答案 2 :(得分:0)

尝试这样可以100%工作: 当您定义局部变量时,它们表示该类/对象的全局变量。 一开始就收集它,因为当您得到:

   this.collection.each(function (model) {
      // There is no this any more 
      // this is ref for this.collection !
   }

尝试一下:

getTabularData: function (page) {

  var ROOT_MAIN = this;

  var data = [],
  that = this,
  models = this.collection.models;

  var length = models.length;

        if (this.collection) {
            this.collection.each(function (model) {

                var items = model.attributes.items;
                for (var index in items) {
                    convertValue(1, 2);
                    var hash = {
                        // Calling the function
                        gbpValue: ROOT_MAIN.convertValue(items[index].value, 0.861),

                    }
                    data.push(hash);
                }
        
            });
        }

        return data;
    },

答案 3 :(得分:0)

// define
convertValue = function (value, exchangeRate) {
  return value * exchangeRate;
};

// use
convertValue(items[index].value, 0.861);