Javascript VueJS动态获取计算属性

Javascript VueJS动态获取计算属性,javascript,vue.js,vuejs2,vue-component,Javascript,Vue.js,Vuejs2,Vue Component,我需要计算以calculateSum字符串开头的computed属性的总和 我不知道该怎么做,因为我无法使用this.computed 因此,我的方法/尝试是: getSubTotal(){ var computed_names = []; var computed_names_filtered = computed_names.filter(x => {return x.startsWith('calculateSum')}) return _.sum(compu

我需要计算以
calculateSum
字符串开头的
computed
属性的总和

我不知道该怎么做,因为我无法使用
this.computed

因此,我的方法/尝试是:

getSubTotal(){
    var computed_names = [];
    var computed_names_filtered = computed_names.filter(x => {return x.startsWith('calculateSum')})
    return _.sum(computed_names_filtered.map(x => eval(x+'()'))
}

你知道怎么做吗?

你可以使用
这个['computed\u name']
动态访问它们 由于组件实例是一个对象:

var computed_names = Object.keys(this);
var computed_names_filtered = 
computed_names.filter(x => {return x.startsWith('calculateSum')})
 _.sum(computed_names_filtered.map(x => this[x]))
请注意,调用computed属性时不使用
()
,但如果要调用方法,可以执行
此['method\u name']()

例如:

//忽略以下两行,它们只是在“运行代码段”中禁用警告
Vue.config.devtools=false;
Vue.config.productionTip=false;
新Vue({
el:“#应用程序”,
计算:{
op1(){
返回1;
},
op2(){
返回2;
},
op3(){
返回23;
},
总数(){
返回['op1','op2','op3'].map(o=>this[o]).reduce((acc,curr)=>acc+=curr,0)
}
},
})

{{total}}

也许这可以帮助您获得计算的列表:

this.$options.computed