javascript - 在 JavaScript 中解开对象

标签 javascript jquery

我触发了一个名为“搜索”的事件以及一个对象。

    $(".btn-class").on("click", function() {

        var params = {
            "searchText": "sometext",
            "searchProps": ["prop1", "prop2", "prop3"]
        };

        COMP.Util.announce("search", {
            params: params
        })
    });

在另一个类中,我正在监听此事件并处理该对象:

var ListView = Backbone.View.extend({
        init: function() {
            COMP.Util.listenTo("search", $.proxy(this.applySearch, this));
        },
        applySearch: function(params) {
            // do something
        }
    }
})

我的问题是,当“params”传递给 applySearch 函数时,它变成一个包装对象:

params: Object
searchProps: Array[3]
searchText: "sometext"
__proto__: Object
__proto__: Object

如果打印出来,我得到:

params=%5Bobject+Object%5D

我希望能够将“params”从对象中解开为纯文本,并且还想知道为什么在这种情况下会发生换行

searchProps: Array[3]
searchText: "sometext"
__proto__: Object

打印如下: params=searchText=sometext&searchProps=prop1&searchProps=prop2&searchProps=prop3

最佳答案

您可以使用以下方法“解开”对象:JSON.stringify(params)

但是,我认为您可能会因为向 params 对象添加一个名为 params 的键而感到困惑。您可能想保留那个额外的键:

$(".btn-class").on("click", function() {

        var params = {
            "searchText": "sometext",
            "searchProps": ["prop1", "prop2", "prop3"]
        };

        COMP.Util.announce("search",params)
    });

关于javascript - 在 JavaScript 中解开对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32129129/

相关文章:

javascript - 在 jQuery Deferred/Promise 中包装 webSql executeSql 调用

jquery - 防止 Jquery 中第二次发生 Keyup 事件

javascript - OpenLayers:获取给定投影中 map 的分辨率 (4326)

Javascript "toggler"函数无法在 IE9 或 IE10 中运行(IE8 有后备),但可以在 IE11、Chrome、Firefox 中运行

javascript - 为什么 0 === {} 没问题,但 {} === 0 会抛出错误?

javascript - 在 React js 中获取客户端本地时区

javascript - 从 jquery 集合中获取 jquery 对象

javascript - 使用函数设置对象成员失败

javascript - jqueryparent().find(input).val();单击时访问一个表格单元格中的两个输入字段

javascript - 如何在 JavaScript 中创建具有不同变量的可重用函数