
已解决问题
谷歌tb5554069用户在2016.05.05提交了关于“梦三国J**aScript中判断原生函数检查function是否是原生代码”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2025-02-27T16:42:27。希望大家能够帮助她。详细问题描述及疑问:期待您的答案,真心佩服你,谢谢 !
详细问题描述及疑问:期待您的答案,真心佩服你,谢谢 !
我总是经常碰到需要检查
J**aScript代
判断函数是否是原生方
1//判断是否原生函数
2functionisNative(
3//示例:
4
5//"functionalert(){[nativecode]}"
6//''+
7return(/{s*[native
8}
将函数转换为字符串表示的形式,并且执行
升级版,Update!
01;(func
02
03//取得Object的toString方法,用于处
04vartoString=Object.prototype.toSt
05
06//取得原始的Function的toString方法,用于处理
07varf
08
09//用于检测宿主对象构造器(hostconstructors),
11varreh**os
12
14//使用`Object#toString`是因为一
15varreNative
16//将`Object#toString`强
17S
18//对所
19.replace(/[.*+?^${}()|[]/]/g,'
20//为了保持模板的通用性,将`toStr
21//将`for`
22.replace
23//结束符
24+'$'
25);
26
27
28//判断typeof
29vartype=ty
30returntype=='function'
31//使用`Function#toStr
32//而不是value自己的`toSt
33//以免被
3
35//如果type不是'function',
36//则需要检查宿主对象(hostobject)的情形,
37//因为某些(浏览器)环境会将typedarrays之类的东西当作DOM方法
38//此时可能不匹配标准的Native正则模式
39:(value&&type=='object'&&reh**ostCtor.test(***.call(value)))||false;
40};
41
42//可以将isNative赋值给你想要的变量/对象
43window.isNative=isNative;
44}());
测试代码:
1isNative(isNative)//false
2isNative(alert)//true
3window.isNative(window.isNative)//false
4window.isNative(window.alert)//true
5window.isNative(String.toString)//true