JavaScript this 关键字总结

293 阅读2分钟

this表示对当前对象的一个引用,不是固定不变的,会随着执行环境上下文改变而改变

记住以下this的总结,这是重点!!

  1. 在方法中(该方法不是由箭头函数定义的),this表示该方法所属的对象;

  2. 如何单独使用,this表示全局对象;

  3. 在函数中,this表示全局对象;

  4. 在函数中,在严格模式下,this是未定义的(undefined);

  5. 在事件中,this表示接受事件的元素;

  6. call( )、apply( )可以将this引用到任何对象;


有时候分不清方法还是函数,这里记一下~~

方法和函数的区别:

首先我们通过例子先来理解一下方法和函数的区别:

例子1:

//例子1:
var person = {
  name:'leaf';
  age:26;
  getName:function(){
    console.log(this.name);
  }
}

person.getName();//leaf

getName属性是一个方法,所属的对象是person。即getName属性属于person的对象方法。getName不能单独引用,只能通过对象来调用,比如person.getName( )。

例子2:

//例子2:
function demo(){
  console.log("我是函数",this);
}

demo();

上边demo就是一个函数,它具有独立的功能,能单独引用demo( )。

结合我们开头关于this的总结:在方法中,this表示该方法所属的对象;在函数中,this表示全局对象;

在例子1中this表示person这个对象,在例子2中this表示全局对象window。

再来看一个例子:

var name = "windowsName";
var person = {
  name: 'leaf',
  getName: function () {
    console.log(this.name); 
  }
}

var f = person.getName();
f();
//windowsName

将person对象的方法getName( )赋值给变量f,上边的代码等价于:

var name = "windowsName";
var person = {
  name: 'leaf',
  getName: function () {
    console.log(this.name); 
  }
}

var f = function getName(){
  console.log(this.name);
}
f();
//windowsName

所有f是一个函数,在函数中,this表示全局变量,所以输出打印windowsName。

方法和函数的区别总结:

  • 方法和对象绑定在一起的,不能单独引用,只能通过对象来调用;

  • 函数具有独立功能,能单独引用;

  • 在方法中,this表示该方法所属的对象;在函数中,this表示全局对象;