【问题标题】:Durandal computed prototype methodsDurandal 计算原型方法
【发布时间】: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


【解决方案1】:

是否可以在我的视图模型原型上定义计算属性?据我所知,在声明时无法访问正确的 this 值。

正确。所以答案是否定的,你不能在原型方法上使用计算。

【讨论】:

    猜你喜欢
    • 2013-05-09
    • 2016-08-29
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-16
    • 2021-08-03
    • 1970-01-01
    相关资源
    最近更新 更多