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]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值