JavaScript之this指向

Js中this是在运行的时候进行绑定的,这是Js中this关键字具有多重含义的本质缘由。因此,Js中的this能够是全局对象、当前对象或者是任意对象。这彻底取决于函数的调用方式,而js中函数的调用有如下几种方式:数组

  • 做为对象方法调用
  • 做为函数调用
  • 做为构造函数调用
  • 使用apply或call调用

根据如下判断,判别this分别指向什么:
1.函数调用是用new进行调用的吗?若是是,则this指向新建立的对象,不然进行下一步判断
2.判断该函数是不是用dot(.)进行调用的,若是是的话,那么this指向dot(.)以前的对象;不然this指向全局对象window.app

四种调用方式中this的指向函数

函数调用模式中this指全局对象(window)学习

var f1 = function() {
            alert("这个是函数调用");
            alert(this);//window
          };
          f1();

方法调用
 由对象调用方法(当对象为null的时候,函数进行函数调用模式,当对象不为null的时候,函数实现方法调用模式)
 在方法调用模式中 this 表示当前对象this

var o = {name:"小明"};
      o.say = function() {
        alert(this.name);//小明
        alert(this);//o
      };
      o.say();

任何一个函数放在new 后面就是构造函数,构造函数的this是构造函数返回的对象,构造函数的return发生变化,若是返回的是对象,直接返回,不然返回建立出来的对象
code

  var Person = function(n) {
    this.name = n;
     return {

     name:"男",
     get:function(){
         console.log(this.name);
     };
    // return 123;
  }
  var p = new Person();

函数的apply调用模式和call调用模式
语法:
  函数名.apply(对象, [参数数组]);
   函数名.call(对象, 参数列表);
对象

  var func = function() {
    this.name = "小明";
    this.say = function(){alert(this.name + "学习好");};
  };
  func.apply(null); // 等价于 func();
相关文章
相关标签/搜索