29.11.2013, 13:48
|
Аспирант
|
|
Регистрация: 12.07.2012
Сообщений: 81
|
|
$.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)
|
|
29.11.2013, 13:54
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,215
|
|
Сообщение от niko42
|
в чем раздница
|
Это смотря для чего и как ты будешь это использовать...
Для такого использования
Сообщение от niko42
|
alert(options.color_Even)
|
разницы нет.
Это просто вывод значения свойства некоего объекта... В обоих случаях оно равно строке
'#ff0000'
|
|
29.11.2013, 13:56
|
Аспирант
|
|
Регистрация: 12.07.2012
Сообщений: 81
|
|
Сообщение от ksa
|
!
|
Спасибо! Но меня интернесует, зачем и для чего $.extend оно нужно?
|
|
29.11.2013, 14:06
|
Аспирант
|
|
Регистрация: 12.07.2012
Сообщений: 81
|
|
Спсибо раза 3 чиатал, не понятно.....
Последний раз редактировалось niko42, 29.11.2013 в 14:08.
|
|
29.11.2013, 14:13
|
Аспирант
|
|
Регистрация: 12.07.2012
Сообщений: 81
|
|
Я так понимаю:
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);
объединяет два объекта в один и все свойтсва двух объектов доступны в одном новом объекте
Верно ли данное суждение?
|
|
29.11.2013, 14:20
|
|
Кандидат Javascript-наук
|
|
Регистрация: 07.12.2012
Сообщений: 113
|
|
niko42,
В ООП, extend наследует свойства и методы из одного класса в другой, при этом добавляет новые необходимые свойства и методы, ради которых новый класс и создаётся.
http://javascript.ru/tutorial/object...unkciya-extend
Последний раз редактировалось mi.rafaylik, 29.11.2013 в 14:57.
|
|
29.11.2013, 14:51
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
jQuery.extend необходимо использовать для создания примесей, т.е. создания нового (или расширение старого) объекта свойствами других объектов, частый пример: функция принимает на вход объект с различными параметрами, у части параметров есть значение по умолчанию и можно на основе двух объектов (входные параметры и по умолчанию) создать третий, в котором заданы актуальные свойства.
jQuery.extend не надо использовать для наследования свойств объектов при работе с "классами", для этого есть прототипы!
Последний раз редактировалось kobezzza, 29.11.2013 в 14:58.
|
|
29.11.2013, 14:56
|
|
Быдлокодер;)
|
|
Регистрация: 19.11.2010
Сообщений: 4,338
|
|
Я думаю человек спрашивает про jQuery.extend, а не тот, что указан в статье по твоей ссылке, да и ту функцию (что в твоей ссылке) правильней назвать inherit, чтобы не было путаницы, т.к. у многих extend ассоциируется именно с примесями, а не с наследованием прототипа функцией.
|
|
29.11.2013, 14:58
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,215
|
|
Сообщение от niko42
|
Я так понимаю:
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);
объединяет два объекта в один и все свойтсва двух объектов доступны в одном новом объекте
Верно ли данное суждение?
|
Да.
|
|
|
|