The code is as follows:
var doubling=function(x){
return x*2;
};
var obj={
val:100,
};
When the function call mode is used, this is bound to the global object. This situation can also be reflected when the properties and methods of the object are initialized. Now add the following for ojb:
Copy code The code is as follows:
var obj={val:100,
prop:function(){
var that=this;
document.write('name: '+that+'; type: '+typeof(that)+'
');
return doublling(that.val);
}(),
get_prop:function(){
var that=this;
document.write(' name: '+that+'; type: '+typeof(that)+'
');
return doublling(that.val);
},
};
prop uses an anonymous executable The function expects to obtain the result of the doubling() operation of the object's val value in the function calling mode; and get_prop is the method calling mode.
When the script is loaded, when the attribute prop of obj is initialized, the statement "name: [object Window]; type: object" is output. When using obj.get_prop(), the statement "name: [object Object]; type: object" is output. . The former indicates that "this" in the function body is the global variable window, and the latter is obj itself as expected.
You can check the return value of the attribute prop and method get_prop(). The former multiplies the window object and returns NaN, and the latter is equal to 200.
In addition to the obj literal expression, it is expected to set the new_prop attribute and new_get_prop() method. The result will be consistent with the previous article, and the method calling mode will obtain the binding of this to itself.