Пересоздаю тему!
Все темы были неудачными! Было плохое настроение!
Пробуйте теперь такой код! (function(){ var global = (function(){return this;})(); //Image Loader global.loadImage = function(src,onload){ var img = new Image(); img.src = src; img.onload = onload; return img; }; //DOM Object global.DOM = function(element){ var init = new xDOM(element); return init; }; //Init DOM var xDOM = function(element){ var elem = element; this.attr = function(src){ DOM.prototype.attr(elem,src); return this; } this.css = function(src){ DOM.prototype.css(elem,src); return this; } this.event = function(src){ DOM.prototype.event(elem,src); return this; } }; //Set Attributes DOM.prototype.attr = function(elem,src){ if(src==null){src={}} for(var i in src){ elem.setAttribute(i,src[i]); } } //Set CSS DOM.prototype.css = function(elem,src){ if(src==null){src={}} for(var i in src){ if(typeof elem.style.setProperty != "undefined"){ elem.style.setProperty(i,src[i],null); } else { elem.style.setAttribute(i,src[i]); } } } //Event Attach DOM.prototype.event = function(elem,src){ if(src==null){src={}} for(var i in src){ if(elem.addEventListener) { elem.addEventListener(i, src[i], false); } else if(elem.attachEvent) { elem.attachEvent('on' + i, function(e){func.call(src[i], e);}); } } } })(); |
А как вы темы создаёте, у меня не получается?
|
каждый раз при вызове DOM будет создаваться новый объект (это ничего) и к нему каждый раз будут добавляться свойства (это уже плохо)
//DOM Object global.DOM = function(element){ var init = *!*new xDOM(element);*/!* return init; }; //Init DOM var xDOM = function(element){ var elem = element; *!*this.attr*/!* = function(src){ DOM.prototype.attr(elem,src); return this; } *!*this.css*/!* = function(src){ DOM.prototype.css(elem,src); return this; } *!*this.event*/!* = function(src){ DOM.prototype.event(elem,src); return this; } }; вам уже об этом намекали, и я писал код, который добавляет эти свойства не к новому объекту, а к прототипу объекта. попробуйте так же |
Цитата:
Да Вы ещё и ничему не учитесь. Прочитайте что-нибудь об объектах и прототипах в JS, что ли. |
Solovei95,
вы почти чемпион по созданию никому не понятных тем, скоро nemo переплюнете. |
xDOM и DOM это совершенно разные вещи!
Умейте различать. А если все равно видите минус - то покажите правильный код!!! |
Цитата:
Более того, в Вашем случае конструктор DOM будет возвращать объект "типа" xDOM. А правильно так: // DOM cons var DOM = function(element){ this._element = element; }; DOM.prototype = { attr : function(attr){return this._element.getAttribute(attr)} // … }; global.DOM = DOM; |
Да понял я вас!
Вот еще вариант! (function(){ var global = (function(){return this;})(); //Image Loader global.loadImage = function(src,onload){ var img = new Image(); img.src = src; img.onload = onload; return img; }; var xDOM = function(elem){ var init = new DOM(elem); return init; } //DOM Object var DOM = function(element){ this._elem = element; }; //Set Attributes DOM.prototype.attr = function(src){ if(src==null){src={}} for(var i in src){ this._elem.setAttribute(i,src[i]); } return this; } //Set CSS DOM.prototype.css = function(src){ if(src==null){src={}} for(var i in src){ if(typeof this._elem.style.setProperty != "undefined"){ this._elem.style.setProperty(i,src[i],null); } else { this._elem.style.setAttribute(i,src[i]); } } return this; } //Event Attach DOM.prototype.event = function(src){ if(src==null){src={}} var self = this; for(var i in src){ (function(i){ if(self._elem.addEventListener) { self._elem.addEventListener(i, src[i], false); } else if(self._elem.attachEvent) { self._elem.attachEvent('on' + i, function(e){ src[i].call(self._elem, e); }); } })(i); } return this; } global.DOM = xDOM; })(); |
Я прошу пересмотреть данную функцию еще раз!
|
Так уже лучше.
|
Часовой пояс GMT +3, время: 21:34. |