The original: JS Love hate revenge say this
This I believe that everyone in the writing code will encounter, but how to use good this, it is still a bit difficult to estimate, although you sometimes you will use, but he is in the specific scenes of what the meaning of the? Maybe this is not very clear to you. This will be a lot of problems in your use of the process, so today we summarize this, exactly this? Is he really that hard to imagine?
Can actually be summed up in a sentence:this refers to the object that called the function
So we can summarize the four invocation scenarios for this:
(1) Method mode: Simple is to use the point expression or subscript expression to call here is bound to have an object in this case, the binding of this occurs when the call to bind the nature of the object to tune it.
So let's take a look at the following example: Also in the blog Park I feel a more classic example:
var x = 2; function Test () { alert (this. x);} Test (); // 2 here Text (): Out of the data is 2 actually we can understand:
var window.x = 2; function Test () { Alert (window. x);//}window.test ();//2
var x = 2
function
{this.x = 0
alert (x);//0
In a different way.
var window.x = 2
function
{window. x = 0
alert (window.x); // 0
Can you understand the first way of the method.
2) function pattern: This is simpler, the function name plus the call operator (' () '). But be careful, this one is tied to a global object, no matter where you write it. (Can be understood as you don't show me the I'll add a global object to it myself)
when a function is called by a function instead of a method call, the This keyword refers to the global object. It is easy to confuse that when a nested function (as a function) is called in a contained function, and this contained function is called as a method, this is also true: the This keyword has a value in the included function, but it does (less intuitively) refer to the inner global object of the nested function body.
var a = ' global ' ; var obj = {a: ' local '
var a = ' global '; var obj = { A: ' Local ', test:function() { alert (THIS.A);//local Actually, we can write a. Lert (OBJ.A) }};obj.test (); Can you understand that?
In response to the above questions, we propose the following outcome plan:
var a = ' global ' ; var obj = {a: ' local ' function Test1 () {alert (THAT.A); // local Test1 (); }};obj.test ();
3) constructor invocation pattern A sentence is a new call with new new when this is bound to a newer object better understanding
The 1.new operator must be followed by a function call. New creates an object without any properties, and then calls the constructor to pass the new object as the value of the This keyword.
2. Constructors typically do not return a value. They initialize the object that is passed as the value of this, and there is no return value. But a construct is allowed to return an object value, and if it does, the returned object becomes the value of the new expression. In this case, the object that is the value of this is discarded.
var function (String) { this. Name =function ()} {returnthis . Name}varnew person (' Lin '); Myperson.getname (); If you bring a new to call before a function, A new object that is hidden to the prototype member of the function is created, and this is bound to the new object. The new prefix also alters the behavior of the return statement.
But what exactly is the principle of construction? Looking a little dizzy, huh?
function Newoperator (Constr, args) { var thisvalue = object.create (Constr.prototype); // (1) var result = Constr.apply (Thisvalue, args); if (typeof result = = = ' object ' && result!== null ) { return result; // (2)
4) Apply,call Call pattern Apply,call is the method of the function object, and you want to bind who to the this to directly pass it as the first parameter to the apply or the calling.
var a= {n: ' Lin '}; var function () { returnthisnull)); // Output Lin
Hope the garden friends correct me. Keep on trying to refuel. Next closure.
I'm going to write down a special study of this one today and don't say it. Continue to work hard ... Hope the Garden friends correct me
JS Love and hate revenge say this