javascript的this多种场景用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript的this多种场景用法相关的知识,希望对你有一定的参考价值。

作者:刘志祥

时间:2017.11.10

参考:阮一峰的官方网站

 

this 是javascript中的一个关键字,只能在函数内使用。随着场合的不同,this的值会发生变化。

1. 单纯的全局函数调用,此时this指向window对象

function test1(){
  this.x = 1;
  alert(this.x);
}

test2(); // 1
var x = 1;
function test2(){
  alert(this.x);
}

test2(); // 1
var x = 1;
function test3(){
  this.x = 0;
}

test3();
alert(x); //0

第一个就代表window调用test1();第二个函数证明this指向全局对象Global;第三个执行test3()后,改变了全局变量x,所以证明this指向window。

2.一个对象调用此函数

 

 function test(){
    alert(this.x);
  }
  var o = {};
  o.x = 1;
  o.m = test;
  o.m(); // 1

对象调用此函数,this此时指向改对象。

3. 构造函数调用

function test(){
  this.x = 1;
}

var o = new test();
alert(o.x); // 1

通过test() new出一个新对象后,此时this就指向这个新对象。并且此时this不是全局的,只是指向了这个新new出的对象。不会对外面有什么影响。

 

4.apply调用

apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。

var x = 0;
function test(){
  alert(this.x);
}

var o={};
o.x = 1;
o.m = test;
o.m.apply(); //0
o.m.apply(o); //1

apply()里面为空的话,默认全局调用此函数,this指向全局window,所以输出全局的0;

apply(o)改变了调用此方法的对象,此时this指向了o对象,输出1。

以上是关于javascript的this多种场景用法的主要内容,如果未能解决你的问题,请参考以下文章

js数组高阶方法reduce经典用法代码分享

js数组高阶方法reduce经典用法代码分享

javascript中this的四种用法

javascript中的this对象

JavaScript 片段

Javascript的this的用法