请教,直接调用Object.toString()(结果:输出Object源码)和Object.prototype.toString()(结果:输出[object Object]),对于这两种用法,以及调用的结果怎么理解?

来源:1-5 [JavaScript]类型检测

tjian

2015-03-17 16:14

Object.toString() 应该是可以理解为静态方法,类直接调用,Javascript默认返回定义函数(或者称类)时的源码;那么Object.prototype.toString()呢?

写回答 关注

2回答

  • Bosn
    2015-03-18 11:11:01
    已采纳

    需要搞清楚,Object.toString的toString方法,并不是Object对象上的。


    Object.hasOwnProperty('toString'); // false


    Object.toString方法继承自原型,Object是函数构造器,它的原型其实就是Function.prototype.


    Object.getPrototypeOf(Object) === Function.prototype; // true


    而Object.toString实际调用的,就是Function.prototype.toString;


    Function.prototype.hasOwnProperty('toString'); // true

    tjian

    非常感谢!

    2015-03-19 11:00:38

    共 2 条回复 >

  • tjian
    2015-03-19 10:58:19

    在理解的过程中,还得到下面一些结论,麻烦@Bosn老师帮忙看看:

    1.Object和Function本质上都是function,它们拥有共同的构造器(constructor),并且各自的原型链上有一个共同的原型(但是这并不是说它们的原型相同)。

    2.prototype是"function"类型数据上才具有的属性,继承自Function.prototype(所有function类型的默认原型)。

    3.prototype上存放对原型的引用(原型是object类型),constructor上存放对构造对象的函数的引用(即存放的是function类型)。

    4.Object是创建object数据时的默认构造器,Function是创建function类型数据时的唯一默认构造器。

JavaScript深入浅出

由浅入深学习JS语言特性,且解析JS常见误区,从入门到掌握

281100 学习 · 1020 问题

查看课程

相似问题