我试图了解以下教程示例
中最后一个this
的用法
function AppViewModel() {
this.firstName = ko.observable("Bert");
this.lastName = ko.observable("Bertington");
this.fullName = ko.computed(function(){
return this.firstName() + " " + this.lastName();
},this);//This one!
}
我理解其他this
与正在构建的AppViewModel()
有关,当我删除逗号和最后this
时,该示例不会绑定任何数据。使用this.fullName
不足以将该函数绑定到AppViewModel()
?
因此,ko.computed(function()...
表示将此对象中的引用返回到firstName
和lastName
连接设置为此实例fullName
,我错过了什么?
答案 0 :(得分:2)
问题不在于将计算分配给this.fullName
;它与计算函数内的this
的值有关。默认情况下,在计算函数的上下文中计算时this
中的return this.firstName() + " " + this.lastName();
为window
。
要解决此问题,我们通常会将this
捕获到名为self
或that
的变量中。 ko.computed()
提供了第二种捕获this
的方法,并将其作为第二个参数传入。这就是为什么只有当您包含第二个this
参数时,您的代码段才有效。
有关更多详细信息,请参阅full docs on Computed Observables(向下滚动至管理“此”)。