Второй аргумент к ko.computed
устанавливает значение this
, когда функция для определения вычисленного значения (-х первый Arg) выполняется. В случае fullName
функция использует this.firstName
и this.lastName
. Поэтому, когда это называется, мы хотим убедиться, что this
действительно является нашей моделью просмотра.
Во втором случае была создана переменная с именем self
, которая указывает на соответствующее значение this
. Затем self
используется внутри вычисляемой функции вместо использования this
(что является динамическим). Во втором случае self
мог быть помещен как второй аргумент, а затем this
мог быть использован внутри функции.
Это действительно вопрос стиля. На мой взгляд, использование переменной типа self
в наши дни не соответствует стилю. В конце концов, это сводится к личным предпочтениям.
Вот еще один ответ, который обсуждает this
в нокаут, а также: Difference between knockout View Models declared as object literals vs functions
Хороший учебник по this
в JavaScript здесь: https://derickbailey.com/email-courses/masteringthis/
Theres также небольшое объяснение в Документах странице KO: HTTP: // knockoutjs. ком/документация/computedObservables.html –