今天与一位开发人员交谈,他说可以使用原型对这样的字符串文字进行操作。谁能解释这怎么可能?
var myVar = "some string literal".reverse();
alert(myVar);
我需要实现一些反向方法来接收警报输出(“文字字符串”);
(不是在寻找算法,只是我如何对这样的字符串文字进行操作)
今天与一位开发人员交谈,他说可以使用原型对这样的字符串文字进行操作。谁能解释这怎么可能?
var myVar = "some string literal".reverse();
alert(myVar);
我需要实现一些反向方法来接收警报输出(“文字字符串”);
(不是在寻找算法,只是我如何对这样的字符串文字进行操作)
您可以创建自己的新方法,该方法将返回字符颠倒的新字符串。
String.prototype.reverse = function() {
return this.split("").reverse().join("");
}
工作示例:http: //jsfiddle.net/jfriend00/jXA2x/
仅供参考,扩展这样的内置类型通常不是一个好主意,因为它在某些情况下可能会导致问题,特别是在尝试与其他代码互操作时。
如果您想在单词边界或其他一些标准上拆分和反转,那么您可以.split()
根据您要使用的任何逻辑调整传递给的参数,然后.join()
相应地修改以匹配:
String.prototype.reverse = function() {
return this.split(/\b/).reverse().join(" ");
}
覆盖基类型的原型不是一个好主意,除非您正在为旧浏览器(例如 with Array.prototype.indexOf
)添加功能。
简单地创建一个反向函数是有意义的:
function reverse(str) {
return str.split(' ').reverse().join(' ');
}
可以称为:
reverse('some string literal');
并且会产生
'literal some string'
但是,如果您真的必须通过点符号从任何字符串访问它,您可以将函数设置为String.prototype
:
String.prototype.reverse = function () {
return this.split(' ').reverse().join(' ');
};
这种特殊reverse
的方法误导性地类似于Array.prototype.reverse
. 添加这样的功能很容易被其他开发人员误解并导致代码错误。