阅读量:4
typeof是一个操作符,用来获取一个值的数据类型,返回值是一个字符串,表示该值的数据类型。Object.prototype.toString是一个方法,用来获取一个对象的类型,返回值是一个字符串,表示该对象的类型。
在比较两者时,typeof更适合用来获取基本数据类型的数据类型,而Object.prototype.toString更适合用来获取对象的具体类型。比如:
typeof 1; // "number" typeof "hello"; // "string" typeof true; // "boolean" typeof {}; // "object" typeof []; // "object" Object.prototype.toString.call(1); // "[object Number]" Object.prototype.toString.call("hello"); // "[object String]" Object.prototype.toString.call(true); // "[object Boolean]" Object.prototype.toString.call({}); // "[object Object]" Object.prototype.toString.call([]); // "[object Array]"
总的来说,typeof返回的是一个字符串,表示值的数据类型;而Object.prototype.toString返回的是一个字符串,表示对象的具体类型。在需要区分对象类型时,更推荐使用Object.prototype.toString。