打印Object的prototype属性:
有一个toString方法,不同于一般变量的toString方法,当Object的toString方法执行时:
1.获取当前对象的[[Class]]属性的值;
2.返回 "[object " + 第一步得出的值+ "]"格式的字符串,例如[object Array],
解析:
[[Class]]是一种内部属性,所有的对象(原生对象和宿生对象)都拥有该属性,描述该对象的类型
(值得注意的是[[Class]]的值只能是Object, Number, String, Date等javaScript内置的数据类型,不能用于构造函数产生的对象)
于是,再借用call方法: 调用toString方法,并用另一个对象替换当前对象Object。
console.log(Object.prototype.toString.call(11)); //[object Number] console.log(Object.prototype.toString.call("12")); //[object String] console.log(Object.prototype.toString.call(true)); //[object Boolean] console.log(Object.prototype.toString.call({})); //[object Object] console.log(Object.prototype.toString.call(undefined)); //[object Undefined] console.log(Object.prototype.toString.call(new Date)); //[object Date] console.log(Object.prototype.toString.call(null)); //[object Null] console.log(Object.prototype.toString.call([1,2,3])); //[object Array] console.log(Object.prototype.toString.call(function(){})); //[object Function]
这个方法是多用于判断变量是数组/函数的情况
原文:http://www.cnblogs.com/yanze/p/6354364.html