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
Post a Comment