bozoou
veljača 2014 20:07 12
1
Evo primjera…recimo
function Oblak()
{
this.name='oblak';
this.img=new Image();
this.img.src='oblak.png';
this.img.onload=function()
{
alert(this.src); //ovo radi ..znaci ovdje this predstavlja prethodni this.img
// Zelim atribute img.width i img.height prenesti na instancu klase ..kako do ovog THIS kojeg sam
//označio ispod velikim slovima
// THIS.width=this.width;
// THIS.height=this.height;
}
return this;
}
Ako pitanje nije bilo jasno u komentarima koda, evo kakav bi sad poziv htio napraviti:
var oblak=new Oblak();
alert(oblak.width) // ne zelim: alert(oblak.img.width)
Ovdje to i nije toliko bitno, ali često me muči ovaj problem… …
bozoou
veljača 2014 20:10 12
2
P.S. ako je moguće, ja bi uklonio opciju na forumu …da ne dopušta editiranje posta ako nakon editiranja post previše sliči onom prije editiranja.
Često samo zaboravim tagirati code ili samo tako neku sitnicu…i onda forum ne dopušta editiranje posta…vjerujem da nisam jedini
Evo kako ja to radim, malo drugaciji pristup.
var Oblak = {
init: function() {
var that = this;
this.img = new Image(),
this.img.src = 'http://placehold.it/100',
this.img.onload = function() {
that.height = this.height;
that.width = this.width;
};
return this;
}
}
var oblak = Oblak.init();
alert( oblak.width );
bozoou
veljača 2014 22:59 12
4
Hehe …tako zapravo i ja radim samo mi se zove “This” sa velikim T. Mislio sam da ima možda neki pravilniji način.
Koliko ja znam nema, naucio sam se na taj i funkcionira, nije neki ‘hack’ tako da nema brige
Ovako ja to radim:
function DropDown(el) {
this.dd = el;
this.placeHolder = this.dd.children('span');
this.opts = this.dd.find('ul.filter > li');
this.objText = '';
this.val = '';
this.index = -1;
this.filter = '';
this.initEvents();
}
DropDown.prototype = {
initEvents: function() {
var obj = this;
obj.dd.on('click', function(event){
$(this).toggleClass('active');
event.stopPropagation();
});
obj.opts.on('click', function(){
var opt = $(this);
obj.objText = opt.text();
obj.index = opt.index();
obj.val = opt.data('val');
obj.placeHolder.text('Filter by: ' + obj.objText)
});
},
getValue : function() {
return this.val;
},
getIndex : function() {
return this.index;
},
getText : function() {
return this.objText;
},
getFilter : function() {
return this.filter;
}
}
i sad kad mi treba nesto kazem jednostavno
var test = new DropDown("#element");
test.getValue();
ognjen
veljača 2014 13:06 13
7
Bez “that”:
var Oblak = {
init: function() {
this.img = new Image(),
this.img.src = 'http://placehold.it/100',
this.img.onload = (function(scope){
return function(){
scope.height = this.height;
scope.width = this.width;
};
})(this);
return this;
}
}