请教一个prototype的类型问题。tostring()检测

 var Test=function(){};
  var n= new Test();
  var arr=[1,2,3];

alert(Object.prototype.toString.call(Test.prototype));//object Object

alert(Object.prototype.toString.call(Test));//object Function

 上面这个两条检测我觉得挺好懂,但是下面的。。。

alert(Object.prototype.toString.call(Number.prototype));//object Number ??
alert(Object.prototype.toString.call(Array.prototype));//object Array ??
alert(Object.prototype.toString.call(Boolean.prototype));//object Boolean ??
alert(Object.prototype.toString.call(Function.prototype));//object Function ??

  ////////////

alert(Object.prototype.toString.call(arr.__proto__));//Array
alert(Object.prototype.toString.call(n.__proto__));//Object


{}.toString()方法可以用来检测基本包装类型,但是我并没有Object.prototype.toString.call(Array),我传的都是X.prototype啊  ,prototype不是一个Object么?为什么结果都是其consturctor的类型?
阅读 1.5k
1 个回答

因为Array.prototype//[] 也是数组

[].__proto__ === Array.prototype
ar.__proto__.__proto__`没有此方法。
Array.isArray(Array.prototype)// true

Little known fact: Array.prototype itself is an Array:

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题