Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #21 (permalink)  
Старый 12.12.2014, 22:54
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

Сообщение от bes
если бы querySelectorAll возвращал обычный массив, то можно было бы сделать так
trs.map(function (tr) {
// мини j :-)
    function $(name, element) {
        var el = (element || document).querySelectorAll(name);
        return el ? (el.length > 1 ? Array.apply(null, el) : el[0]) : [];
    }
Ответить с цитированием
  #22 (permalink)  
Старый 12.12.2014, 23:06
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от leshiple
bes, если я правильно понял статью, ссылку на которую вы мне дали, то Array.prototype можно заменить на []
что делай, то и хочешь
var arr = [1, 2, 3];
var arr1 = ["a", "b", "c"];
var mas = arr1.map.call(arr, function (el) { 
	return el;
});
alert(mas);
Ответить с цитированием
  #23 (permalink)  
Старый 12.12.2014, 23:49
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 13.03.2013
Сообщений: 1,572

if (!Array.prototype.map) {
    Array.prototype.map = function (fn, scope) {
      var tmp = [];
      for (var i = 0, len = this.length; i < len; ++i) {
        tmp.push(fn.call(scope, this[i], i, this));
      }
      return tmp;
    }
  }
  var arr = [1, 2, 3];
  var arr1 = ["a", "b", "c"];
  var mas = arr1.map.call(arr, function (el) {
    return el;
  });
  alert(mas);

  var sas = arr.map(function (el) {
    return ++el;
  });

  alert(sas);
Ответить с цитированием
  #24 (permalink)  
Старый 13.12.2014, 09:35
Интересующийся
Отправить личное сообщение для leshiple Посмотреть профиль Найти все сообщения от leshiple
 
Регистрация: 09.12.2014
Сообщений: 21

bes, зачем здесь:
var mas = arr1.map.call(arr, function (el) {
    return el;
});

arr1?
Чем он "лучше" чем Array.prototype или []? Он же никак никак не влияет на выполнение функции и к нему внутри функции кроме как по имени не обратишься. Или я ошибаюсь?

Poznakomlus на developer.mozilla.org я прочитал что твоя первая конструкция в посте №23 это полифилл. Как я могу проверить работоспособность твоего кода (в каких случаях метод map будет отсутствовать)? Мне нужен старый браузер или в коде как-то объявить версию языка?

Последний раз редактировалось leshiple, 13.12.2014 в 09:44.
Ответить с цитированием
  #25 (permalink)  
Старый 13.12.2014, 09:51
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от leshiple
bes, зачем здесь:
var mas = arr1.map.call(arr, function (el) {
    return el;
});

arr1?
Он же никак никак не влияет на выполнение функции и к нему внутри функции кроме как по имени не обратишься. Или я ошибаюсь?
ты сказал [] вместо Array.prototype, я показал, что любой массив вместо []

Сообщение от leshiple
Poznakomlus на developer.mozilla.org я прочитал что твоя первая конструкция в посте №23 это полифилл. Как я могу проверить работоспособность твоего кода (в каких случаях метод map будет отсутствовать)? Мне нужен старый браузер или в коде как-то объявить версию языка?
ie8 юзают геронтофилы, поэтому реализация такого полифила полезна только для общего развития
для проверки убери проверку на существование, метод map будет переопределён
Ответить с цитированием
  #26 (permalink)  
Старый 13.12.2014, 10:14
Интересующийся
Отправить личное сообщение для leshiple Посмотреть профиль Найти все сообщения от leshiple
 
Регистрация: 09.12.2014
Сообщений: 21

Я думал что к этому массиву можно обратиться внутри функции через this
Ответить с цитированием
  #27 (permalink)  
Старый 13.12.2014, 10:15
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от leshiple
Я думал что к этому массиву можно обратиться внутри функции через this
call поменял контекст, проверяется простейшими тестами как и всё остальное
Ответить с цитированием
  #28 (permalink)  
Старый 13.12.2014, 10:59
Интересующийся
Отправить личное сообщение для leshiple Посмотреть профиль Найти все сообщения от leshiple
 
Регистрация: 09.12.2014
Сообщений: 21

Чтобы установить свой контекст нужно третьим аргументом у метода call установить необходимый объект.
Я хочу посредством этой конструкции сложить элементы двух массивов без цикла.
Ответить с цитированием
  #29 (permalink)  
Старый 13.12.2014, 11:07
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от leshiple
Чтобы установить свой контекст нужно третьим аргументом у метода call установить необходимый объект.
Я хочу посредством этой конструкции сложить элементы двух массивов без цикла.
может у map, а не у call? нет, третий аргумент - это просто доступ к самому массиву, элементы из которого берутся

навскиду можно так
var arr1 = [1, 2, 3];
var arr2 = ["a", "b", "c"];
var result = arr1.map(function (val, index) {
	return val + arr2[index];
});
alert(result);
Ответить с цитированием
  #30 (permalink)  
Старый 13.12.2014, 11:19
Интересующийся
Отправить личное сообщение для leshiple Посмотреть профиль Найти все сообщения от leshiple
 
Регистрация: 09.12.2014
Сообщений: 21

bes,
Да, у map. Проглядел. Спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как удалить элемент из DOM BorisBritva Events/DOM/Window 8 11.03.2013 21:17
Как удалить элемент? z700i Общие вопросы Javascript 1 30.09.2011 21:40
Как передать элемент в переменную из функции kichSman jQuery 3 12.07.2011 22:16
Как удалить элемент из дерева DOM dummer jQuery 13 16.01.2011 16:19
Как добавить элемент в XML через DOM используя PHP? bayah Серверные языки и технологии 6 11.08.2010 13:33