IE8 - "object doesn't support this property or method" 缩小 return 语句

IE8 - "object doesn't support this property or method" on minified return statement

我有一个函数可以简单地从字符串中获取 url 的查询参数。 (我用它来调整 iframe 上的 src 属性)。

函数如下:

getQueryParameters : function (str) {
    'use strict';

    var params;

    if (!/\?.+/.test(str)) {
        return {};
    }

    params = (str || document.location.search).replace(/(.+\?)/, '');
    params = params.split('&');
    params = params.map(function (param) {
                            param = param.split('=');
                            this[param[0]] = param[1];

                            return this;
                        }.bind({}))[0];
    return params;
}

在除 IE8 之外的所有浏览器中,无论是缩小版还是未缩小版,一切都正常。在 IE8 中我得到这个错误:

object doesn't support this property or method

它将我指向此处的缩小代码:

return/?.+/.test(a)?(b=(a||document.location.search).replace(/(.+?)/,""),b=b.split("&"),b=b.map(function(a){return a=a.split("="),this[a[0]]=a[1],this}.bind({}))[0]):{}}});

知道为什么吗?

许多其他带有此错误的 SO 问题,就像这个问题一样,是特定的。我似乎无法弄清楚,我将不胜感激。

谢谢

您的代码中的问题是您在数组对象上调用 map() 但它是在 ES5 中引入的,而 IE8 不支持。如果您想使用地图,请尝试 JQuery 的 map utility.