YAHOO.lang = YAHOO.lang || {
isArray: function(o) {
if (o) {
var l = YAHOO.lang
// 객체에 속성 길이가 있는 경우 , 스플라이스 방법을 지원합니다.
// 그런 다음 배열로 간주됩니다.
return l.isNumber(o.length) && l.isFunction(o.splice)
return typeof o === 'boolean'
},
isFunction: function( o) {
return typeof o === 'function';
},
isNull: function(o) {
return o === null
},
isNumber: function(o) {
return typeof o === 'number' && isFinite(o)
},
isObject: function(o) {
return (o && (typeof o === 'object' ||
YAHOO.lang .isFunction(o))) || false
},
isString: function(o) {
return typeof o === 'string';
},
isUndefine: function(o) {
return typeof o === '정의되지 않음'
},
//...
isValue: function(o ) {
// 무한대 실패
// return (o || o === false || o = == 0 || o === '');
var l = YAHOO.lang
return (l.isObject(o) || l.isString(o) ||
| l. isNumber(o) || l.isBoolean(o));
}
}; ... 구분선을 복사하여 붙여넣기 ...
YUI 버전 2.2.0 이전이라고 보고됨 , YAHOO.lang.isArray는 이렇게 작성되었습니다.
isArray: function(obj) {
// Safari에는 버그가 있으므로 문자열을 처리해야 합니다.
if (obj && obj.constructor &&
obj.constructor.toString( ).indexOf( 'Array') > -1) {
return true;
} else {
return YAHOO.lang.isObject(obj) && obj.constructor == Array;
}, 다음 코드와 같이 배열 유형에 대한 판단에는 결함이 있습니다.
function myArray() {
this.name = 'name'}
var o2; = new myArray( ; () {
this.name = 'name';
}
var o = new Obj();
o.constructor = Array;
alert(YAHOO. util.isArray(o )); // true 팝업
// JavaScript에서는 생성자도 속성이므로
// 동적으로 지정할 수 있으므로 이후 버전의 YUI에서는 true를 반환합니다. , YAHOO.lang.isArray는 현재로 수정되었습니다.
isArray: function(o) {
if (o) {
var l = YAHOO.lang
// 객체에 속성 길이가 있는 경우 splice 메서드도 지원합니다.
// 그런 다음 배열로 간주합니다.
return l.isNumber(o.length) && l.isFunction(o.splice);
}
return false
}, 새로운 구현에서는 다른 아이디어를 사용합니다. 속성은 splice 메소드도 지원하므로 배열로 간주됩니다. 물론 여전히 허점이 있습니다. 우리는 여전히 length 속성과 splice 메서드를 사용하여 객체를 생성할 수 있습니다. 그러나 나는 현재 구현이 더 합리적이라고 생각합니다. 첫째로 그럴 가능성이 낮고 둘째로 이상한 브라우저 BUG를 피하기 때문입니다.
YUI 2.3.0 이후에 도입된 YAHOO.lang.isValue를 보면 실제로 매개변수가 null/undefine/NaN이 아닌 이상 의미 있는 값인지 판단하여 true를 반환합니다. (이것과 참, 거짓의 일반적인 판단의 차이점은 0/false/''(빈 문자열)가 유효한 값으로 간주된다는 점에 유의하세요.) 따라서 YAHOO.lang.isValue는 양식의 값이 올바른지 여부를 판단하는 데 매우 적합합니다. 필드 값이 유효합니다.