gpt4 book ai didi

javascript - 缓存原型(prototype)函数不会缓存它所属的对象

转载 作者:行者123 更新时间:2023-12-02 18:01:27 25 4
gpt4 key购买 nike

在 Javascript 中,我试图创建一个由 Async.series 执行的函数数组。

Javascript:

function Field(name, height, width) {
this.name = name;
this.height = height;
this.width = width;
}

Field.prototype.doSomething = function(callback) {
console.log(name, width, height);
// do some stuff with name, height etc. and produce someResults
callback(undefined, someResults
}

问题:

// Dict of Functions
var functions = {};

// Array of Field Objects
fields.forEach( function(field) {
functions[field.name] = field.doSomething;
}

Async.series( functions, callback );

问题是,当函数被缓存时,我的所有“类”变量都不会被缓存,因此当我尝试在 Async.series 中运行该函数时会出现异常(名称、宽度和高度未定义)。

关于如何解决这个问题有什么想法吗?

最佳答案

我建议使用bind :

fields.forEach( function(field) {
functions[field.name] = field.doSomething.bind(field);
}

否则,doSomething 中的 this 的值不可能是您想要的值。调用 bindthis 设置为调用 bindfield 的值。

关于javascript - 缓存原型(prototype)函数不会缓存它所属的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20498632/

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