如何从boundFn

时间:2017-11-22 22:35:49

标签: javascript vue.js

我正在深入研究Vue.JS,而且我在从Vue实例获取功能结果时遇到问题。

var DS = {
    getOne: function(){ return 1 }
}

var app = new Vue({
  el: '#app',
  data: {
    name: 'Vue.js',
  },
  methods: {
    greet: function (event) {
      var data = DS.getOne
      console.log(data)
    }
  }
})

我认为DS.getOne应该已经计算好了,但是我在控制台中得到了boundFn。有没有办法计算这个功能?我在哪里可以阅读更多内容来理解这个问题?

ƒ boundFn(a) {
    var l = arguments.length;
    return l
      ? l > 1
        ? fn.apply(ctx, arguments)
        : fn.call(ctx, a)
      : fn.call(ctx)
  }

编辑:https://jsfiddle.net/jvj5u637/

1 个答案:

答案 0 :(得分:1)

DS.getOne指的是一个函数,而不是指向1的数字,正如您所期望的那样。

你可以做以下两件事之一:

第一个选项:不是将data设置为DS.getOne,而是将其设置为DS.getOne() - 区别在于您将调用{{} 1}} function,返回1:

DS.getOne

第二个选项:如果您希望var data = DS.getOne(); // DS.getOne() returns 1 直接指向DS.getOne,那么您需要在定义1时立即运行该功能:

getOne

修改:我使用上述第一个选项修改了您的JSFiddle。警报现在正确打印var DS = { getOne: (function(){ return 1 })() // evaluates to 1 };