new String()的行为与object之类的数组不同

时间:2015-04-18 03:44:43

标签: javascript

var nice = new String("ASH");
nice; //String {0: "A", 1: "S", 2: "H", length: 3, [[PrimitiveValue]]: "ASH"}
var reverseNice = Array.prototype.reverse.call(nice);
reverseNice.toString(); // "ASH"

而我期待reverseNice成为" HSA"。

3 个答案:

答案 0 :(得分:8)

您无法对nice进行更改,请尝试;

nice[0] = 'f';
nice[0]; // "A"

如果您想使用 Array 方法,请先将其转换为真正的数组

var reverseNice = Array.prototype.slice.call(nice).reverse(); // notice slice
reverseNice.join(''); // "HSA", notice `.join` not `.toString`

答案 1 :(得分:0)

为什么不这样做?

var nice = "ASH".split("");
nice; //Array {0: "A", 1: "S", 2: "H", length: 3}
var reverseNice = nice.reverse();
reverseNice.join("").toString(); // "HSA"

或只是

var nice = "ASH".split("");
var reverseNice = nice.reverse().join("").toString();

答案 2 :(得分:0)

使用splitjoin将类型从string转换为array,就像这样。

var nice = new String("ASH");
// create a string 


var result = Array.prototype.reverse.call(nice.split('')).join('');
// string can not use the reverse, 
// so we need split it and call the prototype function of Array ,
// and join the result in the end 

console.log(result)