【发布时间】:2017-02-09 00:29:46
【问题描述】:
是否可以在我的视图模型原型上定义计算属性?据我所知,在声明时无法访问正确的 this 值。
我可以将它放在构造函数中,但是如您所知,它将为每个实例重新定义。所以说到底这只是性能问题。
我的视图模型的 AMD 模块:
function viewModel(){
// this.someComputed works
}
viewModel.prototype.someComputed = ko.pureComputed(function(){
}/*, no context yet..? */);
viewModel.prototype.activate = function(){
// 'this' is an instance of the view model (I presume)
// should I attach it here?
};
return viewModel;
【问题讨论】:
-
这和杜兰达尔本身没有任何关系,是吗?
-
@T.J.Crowder 我想提一下,因为我可以使用 Durandal 的
activate方法,该方法通过this公开函数实例。作为一个我认为你知道答案的附带问题:即使我在构造函数中声明了一个函数,现代浏览器也不会将它添加到原型中吗? -
不,他们没有(也不能)。但他们做的工作是跨多个函数对象重用相同的底层函数代码。所以真的,这只是计算本身和对象(代码附加到的函数对象)的成本。还不错,物件相当便宜。
标签: javascript knockout.js durandal