Javascript 使用ES5的Aurelia计算属性

Javascript 使用ES5的Aurelia计算属性,javascript,aurelia,Javascript,Aurelia,我正在学习Aurelia教程,但有意只使用ES5和AMD/RequireJS,因为最初我试图减少可能需要在我当前的生产应用程序中引入的技术过载(目前正在使用Angular,但我正在考虑切换到Aurelia,而不是Angular 2)但我一直在努力让计算属性正常工作 我注意到,从对象原型中删除了computed函数,这允许使用以下语法,但我不确定我应该做什么,而不是使用以下语法: Welcome.computed({ fullName : function() { return this.

我正在学习Aurelia教程,但有意只使用ES5和AMD/RequireJS,因为最初我试图减少可能需要在我当前的生产应用程序中引入的技术过载(目前正在使用Angular,但我正在考虑切换到Aurelia,而不是Angular 2)但我一直在努力让计算属性正常工作

我注意到,从对象原型中删除了computed函数,这允许使用以下语法,但我不确定我应该做什么,而不是使用以下语法:

Welcome.computed({
    fullName : function() { return this.firstName + " " + this.lastName; }
});
我可以实现与以下相同的效果,但鉴于正在实现的目标,它似乎相当冗长!有没有正确的方法

Object.defineProperty(
  Welcome.prototype,
  "fullName",
  {
    get: function() { return this.firstName + " " + this.lastName },
    enumerable: true
  });

您所做的是正确的-您总是可以重新添加computed factory方法,因为编写所有这些额外的ES5代码可能会变得单调乏味

我还建议指定计算属性的依赖项以优化数据绑定效率。以下代码段是等效的:

ES5:

function fullName(){返回this.firstName+''+this.lastName}
fullName.dependencies=['firstName','lastName'];
Object.defineProperty(
欢迎光临,
“全名”,
{
获取:全名,
可枚举:true
});
ES6/ES7:

@computedFrom('firstName','lastName'))
获取全名(){
返回`${this.firstName}${this.lastName}`;
}

谢谢你……这正是我希望听到的!是的,我完全同意你的看法,我应该为此建立我自己的工厂(让我想知道为什么它被拿走了?!)谢谢你的帮助:)