2016-09-30 8 views
1

Можно ли определить вычисленное свойство на прототипе модели моего представления? Насколько я могу судить, нет способа получить доступ к правильному значению this во время объявления.Методы вычисленного прототипа Durandal

Я могу поместить его внутри конструктора, но тогда он будет переопределен для каждого экземпляра, как вы знаете. Поэтому, в конце концов, это всего лишь вопрос производительности.

Мой модуль 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; 
+0

У Thid действительно нет ничего общего с Дюрандалом как таковым, не так ли? –

+0

@ T.J.Crowder Я хотел упомянуть об этом, так как я могу использовать метод 'activate' Durandal, который предоставляет экземпляр функции через' this'. В качестве побочного вопроса, который, как я думаю, вам известен, даже если я объявляю функцию внутри конструктора, не позволяют ли современные браузеры добавлять его в прототип? – Johan

+1

Нет, они не (и не могут). Но то, что они делают *, повторно использует один и тот же базовый код функции для нескольких объектов функции. Так что действительно, это просто стоимость вычисленного самого себя и объекта (объект функции, к которому привязан код). Неплохо, объекты довольно дешевы. –

ответ

2

Можно ли определить вычисляемый свойство на мой взгляд прототипа модели? Насколько я могу судить, нет способа получить доступ к правильному значению this во время объявления.

Исправить. Таким образом, ответ отрицательный, вы не можете использовать вычисления для прототипов.