1. 查看瀏覽器的對於API的支持
如 Proxy, Promise, Map, Symbol, Reflect等原生方法,在瀏覽器中的支持情況都可以用這個函數檢測
// 判斷瀏覽器是否支持某一方法
function isNative(Ctor) {
return typeof Ctor === 'function' && /native code/.test(Ctor.toString());
}
console.log(isNative(Proxy)) // true
console.log(isNative(Promise)) // true
console.log(isNative(Map)) // true
console.log(Proxy.toString()) // function Proxy() { [native code] }
console.log(Promise.toString()) // function Promise() { [native code] }
console.log(Map.toString()) // function Map() { [native code] }
關於[native code],這種[native code]是不是JS引擎內部實現的,比如chrome的V8引擎,其內部的回調機制是內部C++代碼,而不是真實的JS代碼
2.獲取內置對象的子類型
function getObjType(par) {
return Object.prototype.toString.apply(par);
}
console.log(getObjType([])); //[object Array]
console.log(getObjType(new Date())); //[object Date]
console.log(getObjType(Math)); //[object Math]
console.log(getObjType(new Number(2))); //[object Number]
console.log(getObjType('abc')); //[object String]
console.log(getObjType(null)); //[object Null]
console.log(getObjType(undefined)); //[object Undefined]