【问题标题】:Unwrap an object in javascript在 javascript 中打开一个对象
【发布时间】:2015-08-20 22:01:37
【问题描述】:

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

    $(".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

我希望能够将 Object 中的“参数”解包为纯文本,并且想知道为什么在这种情况下会发生换行

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

这样打印: params=searchText=sometext&searchProps=prop1&searchProps=prop2&searchProps=prop3

【问题讨论】:

  • 你不能在没有明确命名空间的情况下解包参数,即 console.log(params.searchText + params.searchProps[0], etc);您可以创建一个辅助函数来根据需要格式化对象。

标签: javascript jquery


【解决方案1】:

您可以使用以下命令“解包”对象:JSON.stringify(params)

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

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

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

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

【讨论】:

    【解决方案2】:

    您可以重用 jQuery 方法 param() 为您完成这项工作。
    它接受参数数组和普通对象:

    var params = {
       "searchText": "sometext",
       "searchProps": ["prop1", "prop2", "prop3"]
    };
    var paramsEncoded = $.param( params );
    alert(paramsEncoded)
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

    【讨论】:

      猜你喜欢
      • 2012-08-03
      • 1970-01-01
      • 2016-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多