var colors = ["red", "blue", "green"]; // 一个 3 个字符串的数 alert(typeof colors.toString()); alert(typeof colors.toLocaleString()); alert(typeof colors.valueOf()); toLocaleString()和toString()返回的都是字符串,把数组转换为字符串,并返回结果,每一项以逗号分割。 valueOf()返回的是数组对象 toLocaleString()和toString()的结果一样是因为colors数组的toLocaleString方法和toString方法值一样 如果不一样呢?看下面例子 var person1 = { toLocaleString : function () { return "Alamohan"; }, toString : function() { return "Nicholas"; } }; var person2 = { toLocaleString : function () { return "Grigorios"; }, toString : function() { return "Greg"; } }; var people = [person1, person2]; console.log(people);//Nicholas,Greg console.log(people.toLocaleString());//Alamohan,Grigorios console.log(people.toString());//Nicholas,Greg 结果就不一样了,如果把toLocaleString方法干掉呢 var person1 = { //toLocaleString : function () { // return "Alamohan"; //}, toString : function() { return "Nicholas"; } }; var person2 = { //toLocaleString : function () { // return "Grigorios"; //}, toString : function() { return "Greg"; } }; var people = [person1, person2]; console.log(people);//Nicholas,Greg console.log(people.toString());//Nicholas,Greg console.log(people.toLocaleString());//Nicholas,Greg 这样toString和toLocalString方法的结果就是一样的了,说明在toLocalString在默认情况是是调用totring,只有当toLocalString方法的值和 toString的值不一样的情况下才会出现不一样的结果。 语言表达能力不好,各位看官自己悟下,不喜勿喷