Ecmascript 6 Vue原型MyModule并将范围设置为Vue
当我将Vue扩展到Ecmascript 6 Vue原型MyModule并将范围设置为Vue,ecmascript-6,vue.js,es6-modules,Ecmascript 6,Vue.js,Es6 Modules,当我将Vue扩展到 import api from '@/js/api' Vue.prototype.$api = api 在我的api中,如果我默认导出函数,我可以通过此访问Vue实例 //api.js import Vue from 'vue' export default function () { console.log('default export', this) //=> Vue } 我必须通过Vue.prototype.$api() 现在,我想扩展我的ap
import api from '@/js/api'
Vue.prototype.$api = api
在我的api中,如果我默认导出
函数,我可以通过此
访问Vue实例
//api.js
import Vue from 'vue'
export default function () {
console.log('default export', this)
//=> Vue
}
我必须通过Vue.prototype.$api()
现在,我想扩展我的api.js以包含多个函数和私有变量,而不必像使用axios库时那样将此作为对vue实例的引用
我希望能够在不丢失this
上下文的情况下导出模块
var MyModule = {
this.fn1 = function(){console.log(this) //=>Vue}
this.fn1 = function(){console.log(this) //=>Vue}
}
我怎样才能做到这一点呢?我发现这是不可能的
.then()
中的此
上下文是通过箭头函数设置的 我发现这是不可能的
.then()
中的此
上下文是通过箭头函数设置的 您应该避免编写这样的代码。在Axios中,我可以做这个。$http.get('xxx')。然后(//this=>vue')
,这在vue中非常方便。我希望在我的api中也有这样的功能,这是很难推荐的。依赖动态这个是邪恶的,会导致糟糕的ES6 OOP代码。使用现有变量作为jQuery的名称空间是可行的,但在模块化环境中并没有理由这样做。如果您需要api
,请导入它。您应该避免编写那样的代码。在Axios中,我可以执行此操作。$http.get('xxx')。然后(//this=>vue')
,这在vue中非常方便。我希望在我的api中也有这样的功能,这是很难推荐的。依赖动态这个是邪恶的,会导致糟糕的ES6 OOP代码。使用现有变量作为jQuery的名称空间是可行的,但在模块化环境中并没有理由这样做。如果需要api
,请导入它。