js查看瀏覽器是否支持某一方法 [native code] 如ES6新特性 && 獲取內置對象的子類型

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]
發佈了112 篇原創文章 · 獲贊 27 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章