1

在掘金看到篇讲数组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);

Dont
7k 声望144 粉丝

学如逆水行舟不进则退