Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 杜兰达尔计算原型法_Javascript_Knockout.js_Durandal - Fatal编程技术网

Javascript 杜兰达尔计算原型法

Javascript 杜兰达尔计算原型法,javascript,knockout.js,durandal,Javascript,Knockout.js,Durandal,是否可以在视图模型原型上定义计算属性?据我所知,在声明时无法访问适当的this值 我可以把它放在构造函数中,但是,正如您所知,它将被重新定义为每个实例。因此,最终这只是一个性能问题 My view型号的我的AMD模块: function viewModel(){ // this.someComputed works } viewModel.prototype.someComputed = ko.pureComputed(function(){ }/*, no context yet.

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

我可以把它放在构造函数中,但是,正如您所知,它将被重新定义为每个实例。因此,最终这只是一个性能问题

My view型号的我的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;
是否可以在视图模型原型上定义计算属性?据我所知,在声明时无法访问适当的
this


对。所以答案是否定的,你不能在原型方法上使用computed。

这与Durandal本身没有任何关系,是吗?@t.J.Crowder我想提一下,因为我可以使用Durandal的
activate
方法,它通过
这个
公开函数实例。作为一个附带的问题,我想你知道答案:即使我在构造函数中声明了一个函数,现代浏览器不会将它添加到原型中吗?不,它们不会(也不能)。但它们所做的是跨多个函数对象重用相同的底层函数代码。所以实际上,这只是计算本身和对象(代码附加到的函数对象)的成本。还不算太糟,物品相当便宜。