var is = function(obj,type){
var toString =Object.prototype.toString,undefine;
return obj===null&&type==='Null'||
obj===undefine&type==='Undefine'|| call(obj ).slice(8,-1)===type;
}
//원문에는 각 논리 AND 연산을 괄호로 묶었지만 연산자 우선순위에 따라 괄호를 사용할 수 있습니다. 생략
// 첫 번째 줄은 undefine을 선언합니다. 제 개인적인 이해는 최상위 범위에서 undefine 쿼리를 피하고 성능을 향상시키는 것입니다.
ECMA의 설명에 따르면 262, Object.prototype.toString() 은 객체 인스턴스의 유형을 반환하고 "[object ", class 및 "]" 형식의 문자열을 반환합니다.
그래서 type 값인 'class' 값을 슬라이스를 통해 가로채세요.
예외는 IE
표준 브라우저 [객체 창]에서
[객체 객체]를 반환하기 때문에 null이며 정의되지 않습니다.
그러니까 따로 판단하세요.
관련 기사:
javascript deep copy