这些来自knockoutjs.com教程。
任何人都可以解释这个"这个"在fullName属性的末尾吗?请在此处提及JS原则,以便我可以进一步阅读,谢谢!
为什么totalSurcharge属性不需要"这个"最后?
答案 0 :(得分:3)
当执行确定计算值(第一个arg)的函数时,ko.computed
的第二个参数设置this
的值。在fullName
案例中,该函数使用this.firstName
和this.lastName
。因此,无论何时调用它,我们都希望确保this
确实是我们的视图模型。
在第二种情况下,创建了一个名为self
的变量,该变量指向this
的适当值。然后,self
在计算的函数内使用,而不是使用this
(动态)。在第二种情况下,self
可以作为第二个参数,然后this
可以在函数内部使用。
这真的是一种风格问题。在我看来,像self
这样的变量的使用近来已经不合时宜了。最后,归结为个人偏好。
以下是另一个在KO中讨论this
的答案:Difference between knockout View Models declared as object literals vs functions
JavaScript中this
的优秀教程:https://derickbailey.com/email-courses/masteringthis/