Можно ли определить вычисленное свойство на прототипе модели моего представления? Насколько я могу судить, нет способа получить доступ к правильному значению 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;
У Thid действительно нет ничего общего с Дюрандалом как таковым, не так ли? –
@ T.J.Crowder Я хотел упомянуть об этом, так как я могу использовать метод 'activate' Durandal, который предоставляет экземпляр функции через' this'. В качестве побочного вопроса, который, как я думаю, вам известен, даже если я объявляю функцию внутри конструктора, не позволяют ли современные браузеры добавлять его в прототип? – Johan
Нет, они не (и не могут). Но то, что они делают *, повторно использует один и тот же базовый код функции для нескольких объектов функции. Так что действительно, это просто стоимость вычисленного самого себя и объекта (объект функции, к которому привязан код). Неплохо, объекты довольно дешевы. –