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。