gpt4 book ai didi

javascript - Typescript:如何为外部方法创建 'lambda function call'?

转载 作者:行者123 更新时间:2023-11-28 19:52:45 25 4
gpt4 key购买 nike

问题

我正在学习 Typescript,刚刚了解到 lambda 函数用于(编辑)设置 this 的值。但是,我不确定如何将 View 模型的 this 传递到调用我尚未定义的另一个方法的函数中。就我而言,我正在尝试调用 Knockout 方法。请参阅示例:

所需的 JavaScript:

var MyViewModel = (function () {
function MyViewModel() {
var _this = this;
...
this.someMethod = function () {
ko.utils.arrayForEach(this.array1(), function (item) {
while (item.array2().length < _this.array3.length) {
item.array2.push(12345);
}
});
};
...

实际 JavaScript:

var MyViewModel = (function () {
function MyViewModel() {
var _this = this;
...
this.someMethod = function () {
ko.utils.arrayForEach(_this.array1(), function (item) {
while (item.array2().length < this.array3.length) {
item.array2.push(12345);
}
});
};
...

typescript :

method = () => {
ko.utils.arrayForEach(this.array1(), function(item){
while(item.array2().length < this.array3().length){
item.array2.push(0);
}
})
}

一个解决方案...

我使用的一个解决方案是手动将 this.array3().length 设置为 _this.array3.length(),但这非常老套,我确实这样做不喜欢。

我应该如何将正确的 this 传递到我的内部函数中?

最佳答案

您需要使用另一个 lambda 来继续 this 链:

method = () => {
ko.utils.arrayForEach(this.array1(), (item) => { // NOTE here
while(item.array2().length < this.array3().length){
item.array2.push(0);
}
})
}

关于 TypeScript 中this的提示:https://www.youtube.com/watch?v=tvocUcbCupA&hd=1

关于javascript - Typescript:如何为外部方法创建 'lambda function call'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23146884/

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