正好看到Object.prototype.toString()
,通过解释发现不光是将现有对象内容转为字符串。
If this method is not overridden in a custom object, toString() returns "[object type]", where type is the object type.
大致理解是在没有被自定义默认的情况下,比如仅仅是通过new构造,会返回[object type]
var o = new Object();
o.toString(); // returns [object Object]
于是利用这个性质,被玩惨了:
var toString = Object.prototype.toString;
toString.call(new Date); // [object Date]
toString.call(new String); // [object String]
toString.call(Math); // [object Math]
// Since JavaScript 1.8.5
toString.call(undefined); // [object Undefined]
toString.call(null); // [object Null]
网友评论