js为什么返回两个对象字符串 objcet objcet ?

js中两个使用 toString() 对有个有对象的数组进行操作时,为什么返回两个对象字符串 objcet objcet ?

[{}].toString();

返回

"[object Object]"

为什么呢?而且前面的 o 还一个大写一个小写。

知乎有文:

var a = {} a.toString() 将会返回 [object Object],为何会第一个o小写,第二个大写?[object Object]到底是含义是啥?

If this method is not overridden in a custom object, toString() returns "[object type]", where type is the object type.

MDN上的解释 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/toString

看不懂呀看不懂。

该对象的字符串形式,即就是隐式调用了Object对象的toString()方法。

对象({})的字符串形式是:"[object Object]";

数组([1,2,3搜索])的字符形式是:"1,2,3";

数值(100)和布尔值(true)的字符形式是:"100","true";

函数(User)的字符形式是:"function User(){...}";

核心函数(String)的字符形式是:"function String(){[native code]}"

引:http://www.cnblogs.com/annie211/p/6006782.html

四:js对象方法。

  我们这里主要说明的将会是js的Object.prototype里面的原生的方法。

  1、toString()方法,是我们常用到的一个方法,当我们要将对象转换为值的时候,都会调用这么一个方法,但是其实现,实际上只是返回了一些对象的信息。例如:

1 var s = {x:1, y:1}.toString()
2 //这里返回的内容是[Object, Object]

  当然在许多的内置对象中toString方法实际上是被重写了的,例如,array(数组)对象中,我们是童toString方法的话,是吧当前的额数组中的内容以逗号隔开的形式来返回字符串的。函数调用toString方法的时候,是返回函数的源代码。还有Data对象是toString方法返回的是当前时间星系字符串,等等。

  2、toLocaleString方法和toString方法是类似的,只是返回的是本地的字符串,实际上就是根据一些当地的用户使用习惯来定义的返回内容。

  3、toJSON()方法,实际上在Object.prototype中是没有这一方法的。我们常用的多的是在Date对象中使用,当需要获取当前对象的序列化的时候调用他它怎会获得当前对象的序列化。

  4.valueOf()方法,类似于toString()方法,实际上在js只有在要吧当前的对象转换为费字符串的情况之下才会调用这一方法。一般的对象调用这一方法的时候,返回的数值,实际上就是当前对象的内容,当然内置对象也有改变了这一方法的实现的。例如Date.valueOf(),返回的就是从1970年1月1日到现在的毫秒数。

原文地址:https://www.cnblogs.com/daysme/p/6651010.html