JavaScript之this指向

Js中this是在运转的时刻举行绑定的,这是Js中this关键字具有多重寄义的实质缘由。所以,Js中的this可所以全局对象、当前对象或者是恣意对象。这完整取决于函数的挪用体式格局,而js中函数的挪用有以下几种体式格局:

  • 作为对象要领挪用
  • 作为函数挪用
  • 作为组织函数挪用
  • 运用apply或call挪用

依据以下推断,鉴别this离别指向什么:
1.函数挪用是用new举行挪用的吗?假如是,则this指向新建立的对象,不然举行下一步推断
2.推断该函数是不是是用dot(.)举行挪用的,假如是的话,那末this指向dot(.)之前的对象;不然this指向全局对象window.

四种挪用体式格局中this的指向

函数挪用形式中this指全局对象(window)

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

要领挪用
 由对象挪用要领(当对象为null的时刻,函数举行函数挪用形式,当对象不为null的时刻,函数完成要领挪用形式)
 在要领挪用形式中 this 示意当前对象

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

任何一个函数放在new 背面就是组织函数,组织函数的this是组织函数返回的对象,组织函数的return发生变化,假如返回的是对象,直接返回,不然返回建立出来的对象

  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();
    原文作者:青灯油纸
    原文地址: https://segmentfault.com/a/1190000013911763
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞