Javascript-форум (https://javascript.ru/forum/)
-   Ваши сайты и скрипты (https://javascript.ru/forum/project/)
-   -   Fast-AJAX - быстрая библа для аякса (https://javascript.ru/forum/project/56484-fast-ajax-bystraya-bibla-dlya-ayaksa.html)

KosBeg 18.06.2015 14:34

Цитата:

Сообщение от nerv_
Научи json отправлять :)

тоясть сам стиль кода нормальный?
// Стандартные настройки
  opt.url !== undefined ? opt.url = opt.url : opt.type = location.href;
  opt.type !== undefined ? opt.type = opt.type.toUpperCase() : opt.type = 'GET';
  opt.data = typeof opt.data === 'object' ? opt.data : null;
  opt.timeout = typeof opt.timeout === 'number' ? opt.timeout : 0;
  opt.async = opt.async !== false ? true : false;
  
  // Настройки-Колбеки
  opt.ontimeout = typeof opt.ontimeout === 'function' ? opt.ontimeout : function(data) { alert(data) };
  opt.success = typeof opt.success === 'function' ? opt.success : function(data) { alert(data) };
  opt.onerror = typeof opt.onerror === 'function' ? opt.onerror : function(data) { alert(data) };
  
  xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');

эти строчки не выглядят очень глупо и нагружено?

nerv_ 18.06.2015 14:38

Цитата:

Сообщение от KosBeg
эти строчки не выглядят очень глупо и нагружено?

выглядят. Один из способов избежать этого - использовать дефолтный объект с опциями, который будет расширяеться переданным объектом

KosBeg 18.06.2015 14:43

типа
$.extend(new_param, defolt_param) ?
Тут новые параметры дополняются дефолтными
Тольно надо будет написать extend на чистом JS, а не на jQuery =)

KosBeg 18.06.2015 14:47

function extend() {
  var a = arguments, target = a[0] || {}, i = 1, l = a.length, deep = false, options;

  if (typeof target === 'boolean') {
    deep = target;
    target = a[1] || {};
    i = 2;
  }

  if (typeof target !== 'object' && !isFunction(target)) target = {};

  for (; i < l; ++i) {
    if ((options = a[i]) != null) {
      for (var name in options) {
        var src = target[name], copy = options[name];

        if (target === copy) continue;

        if (deep && copy && typeof copy === 'object' && !copy.nodeType) {
          target[name] = extend(deep, src || (copy.length != null ? [] : {}), copy);
        } else if (copy !== undefined) {
          target[name] = copy;
        }
      }
    }
  }

  return target;
}

выдергнул с ВК :lol:

Rise 19.06.2015 05:55

Цитата:

Сообщение от KosBeg (Сообщение 375621)
выдергнул с ВК :lol:

Так по короче будет :)
function extend(a, b) {
    for (var k in b) a[k] = b[k];
    return a;
}
var defaultOpt = {
    url: '',
    type: 'GET'
};

(function(newOpt) {
    newOpt = extend(extend({}, defaultOpt), newOpt || {});
    console.log(newOpt);
})({url: 'new'});

KosBeg 19.06.2015 10:06

Цитата:

Сообщение от Rise
Так по короче будет :)

спасибо, но в ВК выдергнул чисто для примера ;)
Я его уже переписал, но в Вас еще круче получилось :dance:

KosBeg 19.06.2015 13:35

Цитата:

Сообщение от Rise
вот тебе документ, изучай :D

Ты/Вы дали ссылку на jQuery 1.11.3
а я изучаю jQuery 2.1.4.js ;)
кстати, там я тоже часто зависаю :D

kobezzza 20.06.2015 07:27

Object.assign

KosBeg 20.06.2015 11:20

Цитата:

Сообщение от kobezzza
Object.assign

это вместо extend()? ;)

kobezzza 20.06.2015 11:56

Цитата:

Сообщение от KosBeg (Сообщение 375791)
это вместо extend()? ;)

В твоём случае - да. Лучше юзать нативные функции STD и полифилить, чем велосипедить без необходимости.


Часовой пояс GMT +3, время: 05:05.