Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   $.extend() зачем оно? (https://javascript.ru/forum/jquery/43273-%24-extend-zachem-ono.html)

niko42 29.11.2013 13:48

$.extend() зачем оно?
 
Здравствуйте!

Уточните, пожалуйста, в чем раздница между этим:
var options = {
   color_Even: '#ff0000', // цвет текста четных строк
   color_Odd:  '#0033ff' // цвет текста нечетных строк
   };
alert(options.color_Even)


и этим:
var options = $.extend({
   color_Even: '#ff0000', // цвет текста четных строк
   color_Odd:  '#0033ff' // цвет текста нечетных строк
   },options);
alert(options.color_Even)

ksa 29.11.2013 13:54

Цитата:

Сообщение от niko42
в чем раздница

Это смотря для чего и как ты будешь это использовать...

Для такого использования
Цитата:

Сообщение от niko42
alert(options.color_Even)

разницы нет.
Это просто вывод значения свойства некоего объекта... В обоих случаях оно равно строке
'#ff0000'

niko42 29.11.2013 13:56

Цитата:

Сообщение от ksa (Сообщение 283494)
!

Спасибо! Но меня интернесует, зачем и для чего $.extend оно нужно?

ksa 29.11.2013 13:59

Цитата:

Сообщение от niko42
зачем и для чего $.extend оно нужно?

http://jquery-docs.ru/Utilities/jQuery.extend/

niko42 29.11.2013 14:06

Цитата:

Сообщение от ksa (Сообщение 283497)

Спсибо раза 3 чиатал, не понятно.....

niko42 29.11.2013 14:13

Я так понимаю:
var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar", mix : 123};
var s = jQuery.extend(settings, options);
alert(s.mix);

объединяет два объекта в один и все свойтсва двух объектов доступны в одном новом объекте

Верно ли данное суждение?

mi.rafaylik 29.11.2013 14:20

niko42,
В ООП, extend наследует свойства и методы из одного класса в другой, при этом добавляет новые необходимые свойства и методы, ради которых новый класс и создаётся.
http://javascript.ru/tutorial/object...unkciya-extend

kobezzza 29.11.2013 14:51

jQuery.extend необходимо использовать для создания примесей, т.е. создания нового (или расширение старого) объекта свойствами других объектов, частый пример: функция принимает на вход объект с различными параметрами, у части параметров есть значение по умолчанию и можно на основе двух объектов (входные параметры и по умолчанию) создать третий, в котором заданы актуальные свойства.

jQuery.extend не надо использовать для наследования свойств объектов при работе с "классами", для этого есть прототипы!

kobezzza 29.11.2013 14:56

Цитата:

Сообщение от mi.rafaylik (Сообщение 283505)
niko42,
В ООП, extend наследует свойства и методы из одного класса в другой, при этом добавляет новые необходимые свойства и методы, ради которых новый класс и создаётся.
http://javascript.ru/tutorial/object...unkciya-extend

Я думаю человек спрашивает про jQuery.extend, а не тот, что указан в статье по твоей ссылке, да и ту функцию (что в твоей ссылке) правильней назвать inherit, чтобы не было путаницы, т.к. у многих extend ассоциируется именно с примесями, а не с наследованием прототипа функцией.

ksa 29.11.2013 14:58

Цитата:

Сообщение от niko42 (Сообщение 283503)
Я так понимаю:
var settings = { validate: false, limit: 5, name: "foo" };
var options = { validate: true, name: "bar", mix : 123};
var s = jQuery.extend(settings, options);
alert(s.mix);

объединяет два объекта в один и все свойтсва двух объектов доступны в одном новом объекте

Верно ли данное суждение?

Да. :yes:


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