一直以为 String.prototype 就是一个 object ,String 就是一个函数 ,只不过由系统实现,看了这个评论:
查了 ecmascript 262 spec 以及 ie6 ,firefox3.5 实验才发现实际和标准还是不完全一样的
利用 Object.prototype.toString.call 得到 [[class]]
IE6 6.0.2900.5512
Object.prototype.toString.call(String.prototype) : [object Object] Object.prototype.toString.call(Number.prototype) : [object Number] Object.prototype.toString.call(undefined) : [object Object] Object.prototype.toString.call(null) : [object Object] Object.prototype.toString.call(Boolean.prototype) : [object Boolean] Object.prototype.toString.call(Function.prototype) : [object Function] Object.prototype.toString.call(Array.prototype) : [object Array] Object.prototype.toString.call(Date.prototype) : [object Date] Object.prototype.toString.call(RegExp.prototype) : [object RegExp] Object.prototype.toString.call(Object.prototype) : [object Object] Object.prototype.toString.call(Error.prototype) : [object Object] Object.prototype.toString.call(EvalError.prototype) : [object Error] Object.prototype.toString.call(Error) : [object Function] Object.prototype.toString.call(EvalError) : [object Function] Object.prototype.toString.call(/t/) : [object RegExp]
Firefox 3.5.2
Object.prototype.toString.call(String.prototype) : [object String] Object.prototype.toString.call(Number.prototype) : [object Number] Object.prototype.toString.call(undefined) : [object Window] Object.prototype.toString.call(null) : [object Window] Object.prototype.toString.call(Boolean.prototype) : [object Boolean] Object.prototype.toString.call(Function.prototype) : [object Function] Object.prototype.toString.call(Array.prototype) : [object Array] Object.prototype.toString.call(Date.prototype) : [object Date] Object.prototype.toString.call(RegExp.prototype) : [object RegExp] Object.prototype.toString.call(Object.prototype) : [object Object] Object.prototype.toString.call(Error.prototype) : [object Error] Object.prototype.toString.call(EvalError.prototype) : [object Error] Object.prototype.toString.call(Error) : [object Function] Object.prototype.toString.call(EvalError) : [object Function] Object.prototype.toString.call(/t/) : [object RegExp]
ecma 262 spec
Object.prototype.toString.call(String.prototype) : [object String] Object.prototype.toString.call(Number.prototype) : [object Number] Object.prototype.toString.call(undefined) : global object implementation dependent Object.prototype.toString.call(null) : global object implementation dependent Object.prototype.toString.call(Boolean.prototype) : [object Boolean] Object.prototype.toString.call(Function.prototype) : [object Function] Object.prototype.toString.call(Array.prototype) : [object Array] Object.prototype.toString.call(Date.prototype) : [object Date] Object.prototype.toString.call(RegExp.prototype) : [object RegExp] Object.prototype.toString.call(Object.prototype) : [object Object] Object.prototype.toString.call(Error.prototype) : [object Error] Object.prototype.toString.call(EvalError.prototype) : [object Error] Object.prototype.toString.call(Error) : [object Function] Object.prototype.toString.call(EvalError) : [object Function] Object.prototype.toString.call(/t/) : [object Object]
javascript 作为弱类型语言,知道这些况且还是原型又有什么用呢,我先思考下。.....