Home >Web Front-end >JS Tutorial >Detailed introduction to method calls in JavaScript

Detailed introduction to method calls in JavaScript

PHPz
PHPzOriginal
2016-05-16 16:23:301159browse

This article mainly introduces the detailed introduction of method calling in JavaScript. In JavaScript, if a function belongs to an object, the act of accessing the function through the object is called "method calling". Friends in need can refer to it.

In JavaScript, if a function belongs to an object, the act of accessing the function through the object is called "method call". Different from ordinary function calls, when making a method call, the this reference in the function will change - this will refer to the object used to call the function (the object will become the invocation context of the method call):

var x = 99;
var sample = {
  x:1,
  act:function(a){
    this.x = a*a;//assign value to sample's x, not global object's x.
  }
}
sample.act(6);
console.log(sample.x);//36
console.log(x);//9

Same as accessing properties in objects, in addition to using the dot operator, JavaScript can also use the bracket operator to make method calls:

//other ways to invoke method
sample["act"](7);
console.log(sample.x);//4

For functions in JavaScript , a more interesting behavior is that functions (closures) can be embedded in functions. When making a method call, if there is an embedded function in the method function, then the code in the embedded function can access the external variable value:

//nested function can access variable outside of it.
var y = 88;
var sample2 = {
  y:1,
  act2:function(a){
    this.y = inner();
    function inner(){
      return a*a;
    }
  }
}
sample2.act2(8);
console.log(sample2.y);//64
console.log(y);//88

However, contrary to intuition, the embedded function The code in cannot inherit this from the outside; that is to say, in the embedded function, this does not refer to the object that calls the method, but the global object:

//nested function does not inherit "this". The "this" in nested function is global object
var sample3 = {
  act3:function(){
    inner();
    function inner(){
      console.log(this);//window object
    }
  }
}
sample3.act3();

If you really need to embed the function To access the object calling the method, you can save this value to a variable in the external function:

//pass "this" to nested function
var sample4 = {
  act4:function(){
    var self = this;
    inner();
    function inner(){
        console.log(self);//Object {act4=function()}
    }
  }
}
sample4.act4();

The above is the entire content of this chapter. For more related tutorials, please visit JavaScript video tutorial !

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn