different between Object.toString and Object.prototype.toString

前端 未结 1 1015
北海茫月
北海茫月 2021-01-02 12:38

We can use Object.prototype.toString.call(foo) to detect object class (the type of foo), and it works well.

But why does Object.toString.call({})<

相关标签:
1条回答
  • 2021-01-02 13:22

    Doesn't Object.toString inherit from Object.prototype

    No. The built–in Object constructor is a Function (like all native constructors), so it inherits from Function.prototype (i.e. its private [[Prototype]] property references Function.prototype) before its own prototype property.

    Its prototype chain is:

    Object[[Prototype]] -> Function.prototype -> Object.prototype -> null
    

    so Function.prototype.toString masks Object.prototype.toString.

    A bit of trivia: note that while Function.prototype is a function, it doesn't inherit from itself but from Object.prototype.

    0 讨论(0)
提交回复
热议问题