gpt4 book ai didi

javascript - 在 JavaScript 和 Knockout.js 中,为什么我不能返回变量?为什么我必须像方法一样返回变量?

转载 作者:行者123 更新时间:2023-12-02 16:30:04 26 4
gpt4 key购买 nike

考虑这段代码:

function AppViewModel() {
this.firstName = ko.observable("");
this.lastName = ko.observable("");
this.fullName = ko.computed(function() {
return this.firstName() + " " + this.lastName()
}, this);
}

ko.applyBindings(new AppViewModel());

有一段时间我无法弄清楚为什么 fullName 变量不能正常工作。但后来我注意到我需要返回 this.firstName() 而不是返回 this.firstName。为什么会这样呢?这只是一个奇怪的 JavaScript 约定还是有什么原因?我想了解更多有关 JavaScript 和 Knockout 的知识,以便自己享受,这就是我学习 Knockout 教程的原因。

最佳答案

Why is it that way? Is it just a strange JavaScript convention or is there some reason for it?

是这样的,因为 this.firstName 是一个可观察的,一个函数。如果你想获取它的值,你应该评估它,this.firstName()。然而,如果你想设置它的值,你应该在其中传递一个值 this.firstName("HandlerThatError")。这就是可观察量在 knockout.js 中的工作方式。

关于this.fullName,这是一个计算的可观察量。 this.fullNamethis.firstNamethis.lastName 之间的主要区别在于 this.fullName 的值code> 依赖于其他两个可观察量的值,而 this.firstNamethis.lastName 的值则不然。因此,这称为计算可观察量。

来自knockout.js documentation :

How can KO know when parts of your view model change? Answer: you need to declare your model properties as observables, because these are special JavaScript objects that can notify subscribers about changes, and can automatically detect dependencies.

此外,

To read the observable’s current value, just call the observable with no parameters.

To write a new value to the observable, call the observable and pass the new value as a parameter.

关于javascript - 在 JavaScript 和 Knockout.js 中,为什么我不能返回变量?为什么我必须像方法一样返回变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28388458/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com