javascript - 创建具有 toString 函数的 javascript 对象数组

标签 javascript arrays ajax object

我有一个类型为 javascript 对象的数组:

    var tags = [
        { id: 0, toString: function() { return 'jQuery'; } },
        { id: 1, toString: function() { return 'Python'; } },
    ];

我有一个包含大约 100 个对象的 json。我怎样才能创建我的tags动态数组。我尝试了下面的方法,但没有成功。

    var tags = [];
    $.ajax({
        url: baseurl,
        dataType: 'json',
        data: {
            "stime": stime // some variable
            },
        type: "POST",
        success: function(_data){
            if (_data.length>0) {
                for (var i=0; i<_data.length; i++) {
                    var _x = { id: _data[i].id, toString: function() { return ''+_data[i].name; } }
                    tags.push(_x);
                }

最佳答案

您在 toString 函数中使用 i 。这意味着所有对象都将访问同一个项目,但 i 超出范围。

您可以使用绑定(bind)来代替。

toString: function(name) { return name; }.bind(this, _data[i].name)

编辑

澄清一下,i 是成功闭包的一部分。这意味着当调用 toString 时,将从 success 闭包中取出 i,然后使用 _data,然后使用 _data[i]。 这意味着函数将共享相同的 i。

另外,_data.ids[i] 似乎是错误的。不应该是_data[i].id吗?

关于javascript - 创建具有 toString 函数的 javascript 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29498175/

相关文章:

javascript - 无法使用 jQuery 为边框颜色设置动画

PHP对二维数组中具有相同键值的值求和

javascript - AngularJs - ng-options 在 ajax 调用后不绑定(bind)

php - ajax自定义 header 提交两次

javascript - 使用 Meteor 框架从表单输入中提取数据

javascript - 如何在离开页面时添加类并在返回同一页面时删除该类?

javascript - 当变量选择数组中的元素时,为什么 Node 看不到该元素?

php - jquery 从 mysql 数据库更新表

javascript - 如何在触发 onclick 事件的函数中使用相同的元素

Java String的split方法忽略空子串