$.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) |
Цитата:
Для такого использования Цитата:
Это просто вывод значения свойства некоего объекта... В обоих случаях оно равно строке '#ff0000' |
Цитата:
|
Цитата:
|
Цитата:
|
Я так понимаю:
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); объединяет два объекта в один и все свойтсва двух объектов доступны в одном новом объекте Верно ли данное суждение? |
niko42,
В ООП, extend наследует свойства и методы из одного класса в другой, при этом добавляет новые необходимые свойства и методы, ради которых новый класс и создаётся. http://javascript.ru/tutorial/object...unkciya-extend |
jQuery.extend необходимо использовать для создания примесей, т.е. создания нового (или расширение старого) объекта свойствами других объектов, частый пример: функция принимает на вход объект с различными параметрами, у части параметров есть значение по умолчанию и можно на основе двух объектов (входные параметры и по умолчанию) создать третий, в котором заданы актуальные свойства.
jQuery.extend не надо использовать для наследования свойств объектов при работе с "классами", для этого есть прототипы! |
Цитата:
|
Цитата:
|
kobezzza,
Верно, это я напутал с native JS |
Большое Всем спасибо за пояснение!
|
Есть еще один вопрос:) :
Суть работы скрипта, делаем запрос на сервер, получаем данные и все данные записываем в storage: {}, (function($){ var self={ config: { //Вызов функции после того, как все объекты будут считаны из хранилища callback: function(){}, //Путь к серверному хранилищу path: 'storage.php' }, current: { //Вызвано впервые? first: true }, //Само хранилище данных storage: {}, //запуск на поулчение данных init: function(objects,config){ if(!self.current.first)return; self.current.first=false; //Уст. конфиг $.extend(self.config,config); //Обраб. объекты self.storage=objects; //Восст. объекты self.get(); }, //Расширяет объекты ext: function(objects){ for(var k in objects){ if(typeof(self.storage[k])=='undefined'){ self.storage[k]={}; } //Расширяем if(typeof(objects[k])=='object'){ $.extend(true,self.storage[k],objects[k]); } else { self.storage[k]=objects[k]; } } }, //Возвращает объекты из хранилища get: function(){ $.getJSON(self.config.path,function(data){ self.ext(data); self.config.callback(); }); } }; $.extend({ storage: self.init }); })(jQuery); var a={i:0};//предположим, что тут объекты $(function(){ $.storage({obj:a},{ callback: function(){ alert(a); } }); }); Вопрос, как мне обратиться к хранилющу storage: {}, - напряму? |
Часовой пояс GMT +3, время: 20:14. |