Knockoutjs - 设置函数的上下文

时间:2015-01-27 02:21:00

标签: knockout.js binding this

我正在做一个教程,作者正在解释他设置函数上下文的各种方法。一种方法是声明变量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);
            };
       });

有人在这里请向我解释一下吗?谢谢。

1 个答案:

答案 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