Итак, да, есть плагин для нокаута, который использует геттеры и сеттеры, но он работает только в новых браузерах. Вы жертвуете совместимостью с IE8 < (это неизбежно, поскольку эти браузеры не поддерживают javascript getters/seters). The plugin can be found here.
К вашему основному моменту: понимание намерений руководства стилей важно. Потому что методы обычно многоразовые, помещая их в прототип, сохраняет дублированный код и распределение памяти. Вот почему рекомендуется поставить их на прототип. Однако наблюдаемые нокаутом не могут использоваться повторно. Они ведут себя как свойства: они хранят информацию, специфичную для экземпляра. Эта разница важна. Они могут be функции, но они обрабатываются как Свойства.
Руководство по стилю Google просто не рассматривает этот сценарий. Это не удар производительности, чтобы разместить их в экземпляре, потому что вы сравниваете его со сценарием, который не будет работать. Размещение наблюдаемого на прототипе нарушит модель. Это не удар производительности, который делает единственное, что работает.
Как последнее замечание, плагин getters and setters не позволяет функциям исчезать, он просто скрывает их за геттером и сеттером. Производительность не улучшится, так как еще предстоит проделать ту же работу.
Я не знаю нокаута, но что именно делает функции зависимыми от экземпляра? Если данные хранятся на объекте, тогда нет необходимости создавать функции отдельно для каждого объекта. – Esailija
Функции должны закрывать данные экземпляра, и им приходится перехватывать чтение и запись, чтобы абоненты могли получать уведомления об изменениях. В функциях есть список подписчиков, к которым они должны публиковаться, который является экземпляром-депиантантом (у вас нет доступа к нему), а также уведомлять читателей, как вычисленных, о том, что наблюдаемый читается, поэтому читатели знают, чтобы установить подписку. – Tyrsius
На самом деле это всего лишь нокаутированная идиосинкразия, а не реальное ограничение. Нет абсолютно никакой причины, чтобы он не мог использовать что-то вроде этого: http://jsfiddle.net/Y6Dds/ (да, некоторые люди могли считать строки неудобными, но Эмбер уходит с этим просто отлично) – Esailija