繁体   English   中英

Knockout.js中计算的可观察函数的数据上下文

[英]Data context for computed observable function in Knockout.js

我正在比较在Knockout.js中使用计算的observable函数的两种方法

题:

  1. 函数中的“this”关键字是否可以引用它的父对象(外部,而不是函数内部)?
  2. 为什么版本2即使没有将上下文值放在最后也可以工作?

      ///Version 1 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); //**context** }; ////version 2 my.Product = function () { var self = this; self.id = ko.observable(); self.salePrice = ko.observable(); self.photo = ko.observable(); self.shortDescription = ko.observable(); self.photoUrl = ko.computed(function () { return photoPath + self.photo(); });//why there is no "self" here }; 

我不确定我理解你的第一个问题。 在第一种情况下,您传递“this”以便能够在计算函数中将“this”称为“this”。 淘汰是特定的,但淘汰赛可能使用电话或者申请 两者都允许重新定义“这个”。 如果你没有传递“this”作为第二个参数“this”将引用计算的函数范围。 并且this.photo将是未定义的。

第二种情况是常见的javascript“技巧”。 它包括将“this”赋给变量以便能够在另一个范围内引用它。 您不必将“self”作为参数传递,因为它是一个变量,可以从函数中访问它。

这两个例子都有效。 我个人更喜欢第二个,因为它是处理javascript执行上下文的一种更常用的方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM