$.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, время: 01:04. |