what benefit of this:
hb.somepackage = hb.somepackage || {}; hb.somepackage.somegoodclass = function(someselector){ this.someselector = someselector; } hb.somepackage.somegoodclass.prototype.dosomestuff = function(){ var $obj = $(this.someselector); // work magic $obj; }; as opposed this:
hb.somepackage = hb.somepackage || {}; hb.somepackage.someselector = "hardcodedvaluehere"; hb.somepackage.someotherselector = "anotherhardcodedvaluehere"; hb.somepackage.somereallybadclass = function(){}; hb.somepackage.somereallybadclass.prototype.dosomestuff = function(){};
there's sort of lot consider in question. cover basics, comes down prototypal inheritance , lookup.
your first example:
hb.somepackage = hb.somepackage || {}; hb.somepackage.somegoodclass = function(someselector){ this.someselector = someselector; } hb.somepackage.somegoodclass.prototype.dosomestuff = function(){ var $obj = $(this.someselector); // work magic $obj; }; this makes someselector property of somegoodclass can change depending on callee. if create/call function binded different context, this.someselector correspond callee context:
var newobject = {someselector : 'oldselector'}; hb.somepackage.somegoodclass.apply(newobject, 'newselector'); newobject.someselector; // 'newselector' hb.somepackage.somegoodclass.someselector; // undefined codepen: http://codepen.io/anon/pen/yeenxj
so here, may have thought inside of somegoodclass this.someselector have referred somegoodclass.someselector doesn't.
in second example:
hb.somepackage = hb.somepackage || {}; hb.somepackage.someselector = "hardcodedvaluehere"; hb.somepackage.someotherselector = "anotherhardcodedvaluehere"; hb.somepackage.somereallybadclass = function(){}; hb.somepackage.somereallybadclass.prototype.dosomestuff = function(){}; someselector more or less being used type of constant need referenced inside of other functions of somepackage
depending on context of application , desired/preferred coding practices 1 may desired on other. in second example, calling apply() or call() on somegoodclass function not change "internal" someselector attribute of class wouldn't able lookup attribute within function/object.
Comments
Post a Comment