javascript - Assigning method to variable and problems with this -


i have piece of code:

function a(){     this.count = 0; } a.prototype.inc = function(){     this.count++; }  var = new a(); a.inc(); var f = a.inc; f(); 

the last line deosn't work expected, because this object of type window. something, shouldn't - assign methods variables, in case make use of this?

when want use method argument, should omit fn(a.inc), use regular function, , use insted following?

fn(function(){     a.inc(); }); 

this famous "lost binding" of javascript.

you have do:

f = a.inc.bind(a); 

because if say

f = a.inc; f(); 

then when f running, this not bound a. bound global object, window.

the rule is, if a.fn(), inside of function, this bound a, if fn() or g(), when g === a.fn, inside of function, this bound global object, window.

to bind this explicitly a when function invoked, have use a.inc.bind(a)

if don't want use bind want use own function, that's fine too. do:

function fn() {     a.inc(); } 

or form:

var fn = function() {     a.inc(); }; 

this way, fn closure captures context, , able use a, in scope in scope chain.


Comments

Popular posts from this blog

javascript - How to get current YouTube IDs via iMacros? -

c# - Maintaining a program folder in program files out of date? -

emulation - Android map show my location didn't work -