this - Javascript call method -


why following code output 1 ?

function func(){    alert(this)  }  var = 1;  func.call(i);

definition

function.prototype.call(this,arg1,arg2,...);

thus, when call func.call, first argument pass in bound this variable. in function func, this variable replaced first argument 1.

to play further

you can extend more arguments func , call further arguments , see happen:

function func(a,b){     alert(this + a*b); }  func.call(1,2,3); 

recall definition, first argument or func.call refers this variable of func. you'll end running

alert( 1 + 2*3 ); 

** ref: ** https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/function/call

** further reading **

function.prototype.call has close sibling function.prototype.apply. first argument of both functions refers this variable. difference function.prototype.apply accepts arguments of such function in array.

so instead of

func.call(1,2,3); 

you call by

func.apply(1,[2,3]); 

have fun playing it!


Comments

Popular posts from this blog

python - TypeError: start must be a integer -

c# - DevExpress RepositoryItemComboBox BackColor property ignored -

django - Creating multiple model instances in DRF3 -