在掘金看到篇讲数组api的文章,提及数组已经有42种方法,突然想着怎么快的算出Array的方法。于是写了下,也比较简单。在console上跑一下,就能知道浏览器到底支持了哪些API~
首先是原型上的方法
Object.getOwnPropertyNames(Array.prototype).filter(key=>{
return typeof Array.prototype[key] === 'function'
});
得出是39个,除去constructor,也就38个,那多出的4个是啥,翻了下,原来还有静态方法。那就往Array上找。依葫芦画瓢:
Object.getOwnPropertyNames(Array).filter(key=>{
return typeof Array[key] === 'function'
});
不过合起来也就42个,原来Array.fromAsync似乎还不支持。
合并起来就是:
// 根据传入的object过滤出function
function getFunctionPropertys(obj){
return Object.getOwnPropertyNames(obj).filter(key=>{
return typeof obj[key] === 'function'
});
}
//
function getObjFunctions(obj){
// 获取原型上的,顺便过滤掉constructor,再合并上自身的静态方法
return getFunctionPropertys(obj.prototype).filter(fn=>fn!=='constructor')
.concat(getFunctionPropertys(obj))
}
这样的话,要看下String有哪些方法,就可以
getObjectFunctions(String);
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。