Используется метод, который, кажется, работает в браузерах, которые я пробовал (хотя я не думаю, что это указано стандартом):
function checkMethodType(m) {
if (!m) {
return("doesn't exist");
} else if (m.toString().search(/\[native code\]/) != -1) {
return("native");
} else {
return("non-native");
}
}
checkMethodType(Array.prototype.forEach); // native in modern browsers
checkMethodType(Array.prototype.myMethod); // non-native
jsFiddle здесь: http://jsfiddle.net/jfriend00/GJJqQ/.
Этот метод является нестандартным и не гарантирует его надежности.На самом деле, вы можете обмануть его, если захотите, поместив строку [native code] в не нативный метод.Но это может быть полезно в любом случае в зависимости от того, для чего вы этого хотите.Я не знаю ни одного 100% надежного метода.