isArray : function(v){
return toString .apply( v) === '[객체 배열]';
},
isDate : function(v){
return toString.apply(v) === '[객체 날짜]';
},
isObject : function(v){
return !!v && Object.prototype.toString.call(v) === '[object Object]'
},
isPrimitive : function(v){
return Ext.isString(v) || Ext.isNumber(v) || Ext.isBoolean(v)
},
isFunction : function(v)
return toString.apply(v) === '[객체 함수]';
},
isNumber : function(v){
return typeof v === 'number' && isFinite( v);
},
isString : function(v){
return typeof v === 'string'
},
isBoolean : function(v){
return typeof v = = 'boolean';
}
위는 Extjs3.X ext-base.js에서 타입을 결정하는 코드입니다. 다음과 같은 유사한 내용이 많이 있습니다.
유형: function(v){
return toString.apply(v) ==="Type";
}
또는
유형: function(v){
returntypeof v = =="Type";
}
그러나 내부의 경우 toString 메서드를 사용하여 위의 모든 코드가 동일한 유형일 수 있습니다.
var는 type=function(v){
return toString.call(v) ==="type";
}
위는 모델이고, 이 판단에 해당하는 메소드는 단순화할 수 있습니다. (단, 가독성이 좋지 않다는 단점이 있습니다) 이로 인해 Javascript 로딩 효율성이 크게 향상될 수 있습니다. 개선된 코드는 다음과 같습니다.
var Easy={}, dataTypes = ["Number", "Boolean", "String", "Array",
"Object", "Function", "Date", "RegExp"];
var toStr = Object.prototype.toString;
var is = function (v, t) {
return toStr( o) == "[object " t "]";
};
for ( var i = 0, len = dataTypes.length, t; i < len; i ) {
(함수 ( t) {
Easy["is" t] = function (o) {
return is(o, t)
}
})(dataTypes[i]);//클로저 사용
}
위 코드의 경우 Easy 객체는 유형을 결정하기 위해 8개의 메소드를 생성했습니다. 물론 일부 메소드가 불합리한 경우 해당 메소드를 재정의할 수도 있습니다. , 예:
Easy.isNumber=function (v){
return toString.call(v) ==="[object Number]"&& isFinite(v)
}
때때로 이 작성 방법을 고려해 볼 수도 있습니다. 비슷한 기능으로 몇 가지 메소드를 작성할 때 배고파서 먹으러 갔습니다. 이번에는 여기서 소개하겠습니다.