gpt4 book ai didi

javascript - 将对象属性作为函数参数传递的好策略/模式是什么?

转载 作者:行者123 更新时间:2023-12-02 15:11:05 25 4
gpt4 key购买 nike

这是我所拥有的:

var url = config_ajax.url;
xhr.addEventListener("progress", function(evt, url){
if (evt.lengthComputable) {
var percent = ( evt.loaded / evt.total ) * 100;
console.log(url);
Pub.ajaxIndicator(percent);
}
}, false);

我觉得它看起来很糟糕,但 JS 不喜欢将 config_ajax.url 传递给函数并出错。

最佳答案

actually it creates a closure and is accessible, but I wrather pass it in explicitly, but it's a callback so I don't think possible.

你是对的。回调是一个闭包,您无法显式传递给它。您只能在调用函数时将值传递给函数。但你并没有调用回调,它是为你调用的。您无法控制传递给它的 URL。

我想你可以使用 .bind()将第一个参数设置为特定值(如果您觉得这样更清晰):

function showProgress(url, evt) {
if (evt.lengthComputable) {
var percent = ( evt.loaded / evt.total ) * 100;
console.log(url);
Pub.ajaxIndicator(percent);
}
}

xhr.addEventListener("progress", showProgress.bind(null, config_ajax.url), false);

我建议熟悉闭包,JavaScript 中有一个常见且非常强大的工具。例如。无需创建url,您也可以直接在回调中访问config_ajax

关于javascript - 将对象属性作为函数参数传递的好策略/模式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34797477/

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