0

今天与一位开发人员交谈,他说可以使用原型对这样的字符串文字进行操作。谁能解释这怎么可能?

var myVar = "some string literal".reverse(); 
alert(myVar); 

我需要实现一些反向方法来接收警报输出(“文字字符串”);

(不是在寻找算法,只是我如何对这样的字符串文字进行操作)

4

2 回答 2

4

您可以创建自己的新方法,该方法将返回字符颠倒的新字符串。

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(" ");
}
于 2013-04-24T04:56:52.170 回答
1

覆盖基类型的原型不是一个好主意,除非您正在为旧浏览器(例如 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. 添加这样的功能很容易被其他开发人员误解并导致代码错误。

于 2013-04-24T05:04:15.123 回答