gpt4 book ai didi

JavaScript 通过名称调用对象方法

转载 作者:行者123 更新时间:2023-11-28 13:50:39 26 4
gpt4 key购买 nike

Possible Duplicate:
javascript object, access variable property name?

当某些事件发生时,我试图通过对象的名称调用对象的方法 - 这是我的代码:

var imageObject = {
sendImage : function(obj) {
"use strict";
var thisId = obj.attr('id');
var thisSubmit = obj.attr('data-submit');
var thisCallback = obj.attr('data-callback');
var thisUrl = $('#' + obj.attr('data-url')).text();
new AjaxUpload(thisId, {
action: thisUrl,
name: 'thisfile',
onSubmit: imageObject.thisSubmit,
onComplete: imageObject.thisCallback
});
}
}

我还想将参数传递给提交和回调方法。

目前什么也没有发生,我确信我说得不对 - 谁能解释一下如何实现这一点?

我还使用以下内容来提交和完成:

onSubmit: function(file, extension) {
imageObject.thisSubmit(file, extension);
},
onComplete: function(file, response) {
imageObject.thisCallback(file, response);
}

但是我得到的是错误:

imageObject.thisSubmit is not a function

属性仅存储对象内方法的名称(字符串) - 例如“uploadImage”。

最佳答案

TJ 的答案已经差不多了,只是(根据问题中的新代码)您需要将参数从 onSubmit 复制到 thisSubmit,或者使用 .apply() 为您复制它们。

下面的代码使用后一种方法,这样可以避免一遍又一遍地重复函数签名:

new AjaxUpload(thisId, {
action: thisUrl,
name: 'thisfile',
onSubmit: function() {
imageObject[thisSubmit].apply(imageObject, arguments);
},
onComplete: function() {
imageObject[thisCallback].apply(imageObject, arguments);
}
});

关于JavaScript 通过名称调用对象方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11189612/

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