this operator in javascript -
suppose have javascript code
myclass = function(){ function dosomething(){ alert(this); // this1 } } alert(this); //this2 what 2 'this' objects refer for??
the this value in global execution context, refers global object, e.g.:
this === window; // true for function code, depends on how invoke function, example, this value implicitly set when:
calling function no base object reference:
myfunc(); the this value refer global object.
calling function bound property of object:
obj.method(); the this value refer obj.
using new operator:
new myfunc(); the this value refer newly created object inherits myfunc.prototype.
also, can set explicitly value when invoke function, using either call or apply methods, example:
function test(arg) { alert(this + arg); } test.call("hello", " world!"); // alert "hello world!" the difference between call , apply apply, can pass correctly number of arguments, using array or arguments object, e.g.:
function sum() { var result = 0; (var = 0; < arguments.length; i++) { result += arguments[i]; } return result; } var args = [1,2,3,4]; sum.apply(null, args); // 10 // equivalent call sum(1,2,3,4); // 10 if first argument value of call or apply null or undefined, this value refer global object.
(note change in future, ecmascript 5, call , apply pass thisarg value without modification)
Comments
Post a Comment