native encodeURIComponent不支持编码感叹号-我需要在url的查询参数中正确编码的!

node.js querystring.stringify()也不是..

是使用像https://github.com/kvz/phpjs/blob/master/functions/url/urlencode.js#L30这样的自定义函数的唯一方法?

最佳答案

您可以重新定义 native 功能以添加该功能。

这是扩展encodeURIComponent来处理感叹号的示例。

// adds '!' to encodeURIComponent
~function () {
    var orig = window.encodeURIComponent;
    window.encodeURIComponent = function (str) {
        // calls the original function, and adds your
        // functionality to it
        return orig.call(window, str).replace(/!/g, '%21');
    };
}();

encodeURIComponent('!'); // %21

如果您想缩短代码,也可以添加一个新功能。
不过,这取决于您。

// separate function to add '!' to encodeURIComponent
// shorter then re-defining, but you have to call a different function
function encodeURIfix(str) {
    return encodeURIComponent(str).replace(/!/g, '%21');
}

encodeURIfix('!'); // %21

有关更多示例,请参见Mozilla's dev site

关于javascript - 的javascript-带感叹号的encodeUriComponent?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18835737/

10-11 12:23