JS 원생 여부 판정 방법
var isNative = function(method){//
return !! method && (/{s*[native code]s*}/.test(method+"") ||
/{s*/* source code not available */s*}/.test(method+""));// opera9.x
}
그러나 세계 가 이렇게 넓 으 니 이 문 제 를 연구 한 적 이 있 을 것 입 니 다.다음은 Diego Perini 의 버 전 입 니 다.safari 가 원생 방법 에 대한 toString 값 도 사실은 사람들 과 어 울 리 지 않 습 니 다.
var isNative = function(object, method) {
return object && method in object &&
typeof object[method] != string &&
// IE & W3C browser return "[native code]"
// Safari < = 2.0.4 will return "[function]"
(/{s*[native code]s*}|^[function]$/).test(object[method]);
}
제 버 전보 다 하나의 참 수 를 더 많이 가지 고 그 원생 대상 을 지정 할 수 있 는 방법 이지 만 하나의 매개 변 수 는 두 개의 매개 변수 와 관계 가 없습니다.결 과 는 우리 둘 이 완벽 하기 까지 는 아직 거리 가 있다 는 것 을 보 여 주 는 것 일 뿐이다.이 두 함수 가 합 쳐 져 도 정확 한 전집 은 아 닐 것 이다.물론 이것 은[native code]나 source code not available 가 문제 가 아 닙 니 다.자바 script 에서 다양한 방법 과 대상 을 쉽게 찾 을 수 있 기 때 문 입 니 다.예 를 들 어 아래 코드 는 검사 코드 를 성공 적 으로 속 일 수 있 습 니 다.
window.test = {
toString: function() {
return [function];
}
};
isNative(window, test); // true 마지막 으로 나 는 nwmathers 에서 이것 을 찾 았 다.
var isNative = (function() {
var s = (window.open + ).replace(/open/g, );
return function(object, method) {
var m = object ? object[method] : false, r = new RegExp(method, g);
return !!(m && typeof m != string && s === (m + ).replace(r, ));
};
})();
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JS 판단 수조 네 가지 실현 방법 상세그러면 본고는 주로 몇 가지 판단 방식과 방식 판단의 원리를 바탕으로 문제가 있는지 토론하고자 한다. 예를 들어 html에 여러 개의 iframe 대상이 있으면 instanceof의 검증 결과가 기대에 부합되지 않을...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.