форма преобразуется в настоящий массив
Давайте сначала поговорим о сценарии использования. В JS нам нужно часто управлять DOM, таким как получение входных тегов всех страниц и поиск кнопки элемента типа, а затем регистрировать событие Click для этой кнопки. Мы можем сделать это;
var inputObjs = document.getElementsbytagname ('input'); for (var i = 0; i <inputobjs.length; i ++) {if (inputobjs [i] .type === 'Кнопка') {inputObjs [i] .onclick = function () {return;}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}Определенно не существует проблем с написанием таким образом, но мы знаем, что многие методы операционных массивов намного лучше, чем для петли, таких как метод Foreach ES5, очень полезны; Но можно ли использовать его напрямую? Не могу! Поскольку коллекция объектов DOM не является действительно типом массива по -настоящему, она вызовет ошибку, если вы используете ее напрямую;
var inputObjs = document.getElementsbytagname ('input'); inputobjs.foreach (); //inputobjs.foreach не функцияНесмотря на это, мы все еще можем использовать его. Мы не можем использовать его прямо или косвенно. Просто используйте мощную функцию подражания объектам JS;
var inputObjs = document.getElementsbytagname ('input'); console.info (inputobjs); // [] Длина: 0__proto__: htmlCollectionConsole.info ([]. slice.call (inputobjs)); // [] Длина: 0__proto__: массив [0]Таким образом, после преобразования его в настоящий массив вы можете вызвать метод массива по желанию; Этот метод, безусловно, осуществим, но его нелегко понять и слишком «кружиться». ES6 предоставляет нам более простой и более прямой метод, форму, которая очень проста в использовании:
var inputObjs = document.getElementsbytagname ('input'); console.info (inputobjs); // [] Длина: 0__proto__: htmlCollectionConsole.info (array.from (inputobjs)); // [] Длина: 0__proto__: массив [0]Результат такой же, но он более семантически подходит и легче понять. Разве это не просто в использовании? Конечно, этого недостаточно. Не только тип класса массива данных может быть преобразован в массив с использованием этого метода, но и эффекты разных типов различны. Тест заключается в следующем:
let str = 'Google'; console.log (array.from (str)); // ["g", "o", "o", "o", "g", "l", "e"] let num = 234; console.log (array.from (num)); // [] let bal = false; console.log (array.from (bol)); let obj = {foo: 'foo', bar: 'bar'}; console.log (array.from (obj)); // [] let superobj = {0: 'foo', 1: 'bar', длина: 2}; console.log (array.from (superobj)); // ["foo", "bar"]Вот результаты вызова этого метода различными типами данных. Стоит отметить, что строки и некоторые специальные объекты могут быть преобразованы в массивы с содержанием. Специальные объекты относятся к объектам, содержимое которых расположены в соответствии с парами числовых значений ключей и имеют атрибуты длины. Этот вид объекта может использоваться для петель, а струны также могут использовать для петли, чтобы получить каждый символ, поэтому он сводится к одному предложению. Использование метода FROM, которое может использовать цикл для вывода для вывода, не является пустым массивом; Здесь я хотел бы напомнить вам, что друзья, которые использовали jQuery, могут обратить внимание на то, какую структуру возвращается объект jQuery, когда вы используете селектор для выбора элементов? На самом деле, это последняя структура в нашем примере. Для получения подробной информации, пожалуйста, обратитесь к моим статьям jquery исходного кода.
преобразования значений в массивы
Есть два способа создания массива, один из них - конструктор:
Пусть arr = массив (1,2,3);
Другой - наиболее часто используемое буквальное творение:
Пусть arr = [1,2,3];
Метод массива на самом деле является дополнением к первому методу, а использование следующим образом:
console.log (Array.of (1,2,3)); // [1,2,3]
Похоже, что он имеет тот же эффект, что и метод строительства, так почему этот метод все еще необходим? Посмотрите на следующие примеры, чтобы понять:
console.log (array ()); //=nconsole.log(Array(1)); //=NUNDEFINDENCONSOLE.LOG(Array(1,2)); // [1,2]
В этом примере количество параметров отличается по их значениям. Когда есть только один параметр, параметр представляет элемент, представленный длиной. Если это больше 1 параметра, это приведет к путанице. Тем не менее, не имеет этой проблемы с методом Array.of, потому что элементы, представленные его параметрами, всегда:
console.log (array.of ()); //=nconsole.log(Array.of(1)); //Цин1nconsole.log(Array.of(1,2)); // [1,2]
CopyWithin Array Внутренняя замена копии данных
Основная функция метода CopyWithin заключается в замене внутренних значений массива. Этот метод принимает три параметра, указывая на позицию начальной копии, позицию конечной копии и позицию вставки. Пример заключается в следующем:
[1, 2, 3, 4, 5].copyWithin(0, 3)// [4, 5, 3, 4, 5]// Copy bit 3 to bit 0[1, 2, 3, 4, 5].copyWithin(0, 3, 4)// [4, 2, 3, 4, 5]// -2 is equivalent to bit 3, and -1 is equivalent to bit 4[1, 2, 3, 4, 5] .copywithin (0, -2, -1) // [4, 2, 3, 4, 5] // Копировать бит 3 до бита 0 []. Copywithin.call ({длина: 5, 3: 1}, 0, 3) // {0: 1, 3: 1, длина: 5} // Копировать 2 до конца и копию. 3, 4, 5]); i32a.copywithin (0, 2); // int32Array [3, 4, 5, 4, 5] // для платформ без метода копии типедрайя // требуется следующий метод написания []. CopyWithin.call (новый int32array ([1, 2, 3, 4, 5], 0, 3, 4); 3, 4, 5]Выше приведено метод расширения массива в ES6, введенный вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!