encodedURIComponentValue

encodedURIComponentValue

我正在为Javascript字符串编写此方法encodedURIComponentValue()

这个想法是让我打电话:"some string".encodedURIComponentValue()

代码如下:

if (typeof String.prototype.encodedURIComponentValue != 'function') {
    String.prototype.encodedURIComponentValue = function (str) {
        if (str && str.length > 0)
            return encodeURIComponent(str);
        else
            return "";
    };
}


但在某些情况下不起作用:

var encodedVal = $("body").find("option:selected").first().text().encodedURIComponentValue() // text() = "Option1"

console.log(encodedVal); // I only see "" (empty)


任何的想法 ?

最佳答案

您可能会发现following answer很有帮助,因为它解释了原型,构造函数和this的值。

在这种情况下,我不建议像您那样做。您不拥有String,修改它会破坏封装。唯一“有效”的情况是,您需要实现一个现有方法来支持较旧的浏览器(例如Object.create)。关于here的更多信息。

您可以执行以下操作:

encodeURIComponent(
  $("body").find("option:selected").first().text()
);


因此,除了喜欢其他语法外,确实没有任何理由。

09-28 08:31