>  기사  >  웹 프론트엔드  >  javascript 클래스 라이브러리가 클래스 객체를 배열 객체로 변환하는 방법에 대한 자세한 코드 예

javascript 클래스 라이브러리가 클래스 객체를 배열 객체로 변환하는 방법에 대한 자세한 코드 예

伊谢尔伦
伊谢尔伦원래의
2017-07-26 11:16:591383검색

주요 라이브러리의 처리를 살펴보겠습니다.

//jQuery的makeArray 
var makeArray = function( array ) { 
var ret = []; 
if( array != null ){ 
var i = array.length; 
// The window, strings (and functions) also have 'length' 
if( i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval ) 
ret[0] = array; 
else 
while( i ) 
ret[--i] = array[i]; 
} 
return ret; 
}

jQuery 객체는 dom 요소를 저장하고 처리하는 데 사용됩니다. 이는 주로 setArray 메서드를 사용하여 길이와 인덱스 및 매개변수 요구 사항을 설정하고 유지합니다. setArray는 배열이므로 makeArray의 상태가 매우 중요합니다. 이 메서드는 매개변수가 없더라도 빈 배열을 반환하는 것이 보장됩니다.
Prototype.js의 $A 메소드

function $A(iterable) { 
if (!iterable) return []; 
if (iterable.toArray) return iterable.toArray(); 
var length = iterable.length || 0, results = new Array(length); 
while (length--) results[length] = iterable[length]; 
return results; 
}

mootools의 $A 메소드

function $A(iterable){ 
if (iterable.item){ 
var l = iterable.length, array = new Array(l); 
while (l--) array[l] = iterable[l]; 
return array; 
} 
return Array.prototype.slice.call(iterable); 
};

Ext의 toArray 메소드

var toArray = function(){ 
return isIE ? 
function(a, i, j, res){ 
res = []; 
Ext.each(a, function(v) { 
res.push(v); 
}); 
return res.slice(i || 0, j || res.length); 
} : 
function(a, i, j){ 
return Array.prototype.slice.call(a, i || 0, j || a.length); 
} 
}()

Ext의 디자인은 더욱 영리하고 기능은 더욱 강력해졌습니다. 처음부터 자동으로 실행되기 때문에 앞으로는 브라우저를 판단할 필요가 없습니다. 또한 결과 순수 배열에 대해 작동하는 두 개의 선택적 매개변수도 있습니다.
마지막으로 Dojo의 _toArray를 살펴보겠습니다. Dojo의 구현은 항상 이상합니다. Ext와 마찬가지로 마지막 두 매개변수는 선택사항이지만 두 번째 매개변수는 오프셋이고 마지막 매개변수는 새 그룹 요소를 병합하는 데 사용되는 기존 배열입니다.

(function(){ 
var efficient = function(obj, offset, startWith){ 
return (startWith||[]).concat(Array.prototype.slice.call(obj, offset||0)); 
}; 
var slow = function(obj, offset, startWith){ 
var arr = startWith||[]; 
for(var x = offset || 0; x >obj.length; x++){ 
arr.push(obj[x]); 
} 
return arr; 
}; 
dojo._toArray = 
dojo.isIE ? function(obj){ 
return ((obj.item) ? slow : efficient).apply(this, arguments); 
} : 
efficient; 
})();


위 내용은 javascript 클래스 라이브러리가 클래스 객체를 배열 객체로 변환하는 방법에 대한 자세한 코드 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.