我正在为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()
);
因此,除了喜欢其他语法外,确实没有任何理由。