>웹 프론트엔드 >JS 튜토리얼 >jQuery에서 .makeArray() 함수 사용에 대한 자세한 설명

jQuery에서 .makeArray() 함수 사용에 대한 자세한 설명

黄舟
黄舟원래의
2017-07-19 09:22:311493검색

jQuery.makeArray() jQuery.makeArray()函数用于将一个类数组对象转换为真正的数组对象

所谓"类数组对象"就是一个常规的Object对象,但它和数组对象非常相似:具备length属性,并以0、1、2、3……等数字作为属性名。

不过它毕竟不是数组,没有从数组的原型对象上继承下来的内置方法(例如:push()、 sort()等)。


jQuery.makeArray( object )

注意事项

  • 一个类数组对象,它至少应该具备length属性,哪怕其值为 0,它可以没有"元素"(相当于空数组)。

  • 如果参数object没有length属性,则它不是类数组对象。jQuery.makeArray()会直接将其视作结果数组中的一个元素。

  • String对象虽然有length属性,但一般不将其视作类数组对象。该函数仍然直接将其视作结果数组中的一个元素。

  • 如果对象的最大数字属性大于或等于length属性,则以length属性为准,大于或等于其值的数字属性将被忽略。

返回值

jQuery.makeArray()函数的返回值为Array类型,返回转换后的数组对象。

---------------------------------------------------------------------------------------

类数组对象是非常常见的,例如我们经常使用的jQuery对象NodeList对象以及函数内的arguments对象,都是类数组对象。它们都具有length属性,而且通过数字属性来访问对应的元素或参数。不过,它们毕竟不是真正的数组对象,因此无法使用数组对方的内置方法。通过jQuery.makeArray() 함수는

형 배열 객체 를 실제 배열 객체로 변환하는 데 사용됩니다. .


소위 "배열형 객체"는 일반 객체 객체이지만 배열 객체와 매우 유사합니다. 길이 속성을 가지며 0으로 시작합니다. , 1, 2, 3... ... 및 기타 숫자를 속성 이름으로 사용합니다.

그러나 이는 결국 배열이 아니며 배열의 프로토타입 객체에서 상속된 내장 메서드가 없습니다(예: push(), sort( ), 등.).



//在当前页面内追加换行标签和指定的HTML内容function w(html) {    //document.body.innerHTML += "<br/>" + html;    console.log(html);
}var obj = {    0: "CodePlayer",    1: "Hello",    2: 18,    3: true};
obj.length = 4;// 类数组对象不是真正的数组w(obj instanceof Array); // falsevar arr = $.makeArray(obj);
w(arr instanceof Array); // truew(arr.join(" ")); // CodePlayer Hello 18 truew(arr.length); // 4var obj2 = {};
obj2[2] = "DIY";
obj2.length = 1;var arr2 = $.makeArray(obj2);
w(arr2 instanceof Array); // truew(arr2.length); // 1var obj3 = {};
obj3.length = 0;var arr3 = $.makeArray(obj3);
w(arr3 instanceof Array); // truew(arr3.length); // 0var obj4 = {};// 由于obj4没有length属性,直接将其转换为结果数组中的一个元素var arr4 = $.makeArray(obj4);
w(arr4 instanceof Array); // truew(arr4.length); // 1w(arr4[0]); // [object Object]// 虽然字符串有length属性,但它仍被视作结果数组中的一个元素var arr5 = $.makeArray("CodePlayer");
w(arr5 instanceof Array); // truew(arr5.length); // 1w(arr5[0]); // CodePlayer

🎜Notes🎜: 🎜
  • 🎜 배열과 유사한 객체는 최소한 길이 속성을 가져야 합니다. 값이 0이더라도 가능합니다. "요소"(빈 배열과 동일)가 없습니다. 🎜
  • 🎜object 매개변수에 길이 속성이 없으면 배열형 객체가 아닙니다. jQuery.makeArray()는 이를 결과 배열의 요소로 직접 처리합니다. 🎜
  • 🎜String 객체에는 길이 속성이 있지만 일반적으로 배열과 유사한 객체로 간주되지 않습니다. 함수는 여전히 이를 결과 배열의 요소로 직접 처리합니다. 🎜
  • 🎜객체의 최대 숫자 속성이 길이 속성보다 크거나 같은 경우 길이 속성이 우선하며 해당 값보다 크거나 같은 숫자 속성은 무시됩니다. 🎜

반환값

🎜jQuery.makeArray()함수의 반환값은 Array형이고, 반환 값은 변환된 배열 객체입니다. 🎜🎜🎜----------------------------------------- ---------------------------🎜🎜 🎜배열과 유사한 객체는 우리가 자주 사용하는 jQuery 객체🎜, NodeList 객체 🎜 및 함수 내의 인수 객체 🎜는 모두 배열과 유사한 객체입니다. 이들은 모두 길이 속성을 가지며, 해당 요소나 매개변수는 숫자 속성을 통해 액세스됩니다. 그러나 이는 결국 실제 배열 객체가 아니므로 배열 대응 항목의 내장 메서드를 사용할 수 없습니다. jQuery.makeArray() 함수를 통해 배열형 객체를 실제 배열 객체로 변환하여 배열 객체에 내장된 메서드를 사용할 수 있습니다. 🎜🎜🎜🎜 밤나무: 🎜🎜🎜🎜🎜
// jQuery对象也是一个类数组对象var $p = $("p");var arr1 = $.makeArray( $p );
w( $p instanceof Array ); // falsew( arr1 instanceof Array ); // true// NodeList对象也是一个类数组对象var p = document.getElementsByTagName("p");var arr2 = $.makeArray( p );
w( p instanceof Array ); // falsew( arr2 instanceof Array ); // truefunction foo(a, b){    // arguments对象也是一个类数组对象
    var arr3 = $.makeArray( arguments );
    w( arguments instanceof Array ); // false   
    w( arr3 instanceof Array ); // true}

foo(1, 2);
🎜 우리가 흔히 사용하는 jQuery 객체, NodeList 객체, 인수 객체도 배열형 객체입니다. 🎜🎜🎜🎜rrreee🎜 🎜🎜

위 내용은 jQuery에서 .makeArray() 함수 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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