我正在做一个教程,作者正在解释他设置函数上下文的各种方法。一种方法是声明变量self = this
,另一种方法是将对象作为函数中的第二个参数传递,即:ko.computed(function)(){...}, my.vm)
。我理解这两个概念,但是,我很困惑为什么他将this
作为以下函数中的第二个参数传递:
$(function (){
var photoPath = "/images/";
my.Product = function () {
this.id = ko.observable();
this.salePrice = ko.observable();
this.photo = ko.observable();
this.shortDescription = ko.observable();
this.photoUrl = ko.computed(function () {
return photoPath + this.photo();
}, this);
};
});
有人在这里请向我解释一下吗?谢谢。
答案 0 :(得分:0)
computed()
可观察量的第二个参数是可观察量的“所有者”。也就是说,当计算该值时,它将在访问器函数中用作this
。
例如,
var a = { foo: 1 };
var b = { foo: 2 };
ko.computed(function () { return this.foo; }, a); // 1
ko.computed(function () { return this.foo; }, b); // 2