我只是想知道自我和这个关键字用法之间有什么区别,或者两者都是相同的
var ViewModel = function(first, last) {
this.first = ko.observable(first);
this.last = ko.observable(last);
this.full = ko.computed(function() {
return this.first() + " " + this.last();
}, this);
};
var ViewModel = function(first, last) {
var self=this;
self.first = ko.observable(first);
self.last = ko.observable(last);
self.full = ko.computed(function() {
return self.first() + " " + self.last();
}, self);
};
哪种方法很好,为何被接受?感谢
答案 0 :(得分:1)
Reading the documentation似乎ko.computed
本质上使用第二个arg作为上下文返回绑定函数。
所以,不,在这种情况下似乎没有任何实际的区别。
绑定函数内部存在细微差别:
self.full = ko.computed(function() {
return self.first() + " " + self.last();
}, self);
函数内部的self
(self.first()
)正在创建外部作用域的闭包(声明self)。因此,定义上下文的第二个参数不是真正需要的:
self.full = ko.computed(function() {
return self.first() + " " + self.last();
});
但是,可以在不改变行为的情况下将其更改为:
self.full = ko.computed(function() {
return this.first() + " " + this.last();
}, self);