this的几种使用场景

  

首先,this要在执行时才能确认值,定义时没法确认.而在es6的箭头函数中,this则是在定义时所在的对象html

this对象有四种使用的场景:es6

第一种状况: 全局下this  app

因为全局下的变量是window的属性,函数是window的方法函数

因此this

栗子:spa

function fn1 (){prototype

  return thishtm

}对象

console.log(fn1())  //windowblog

注意: 在严格模式下 “use strict”  this是undefined

第二种状况:构造函数

(1).当函数做为构造函数调用时,this表明new出来的对象;

(2).若是没有使用new而是直接调用函数,this===window;

(3).不单单是构造函数的prototype,即使是在整个原型链中,this表明的也是当前对象的值;

栗子:

function Foo (name){

  this.name = name ;

  console.log(this)

}

var foo = new Foo('Emma');  //Foo {name: "Emma"} 

Foo() //window

第三种状况:函数做为对象的一个属性

这里有两种状况

(1).函数做为对象的一个属性被调用的时候,this指向的是该对象;

(2).函数做为对象的一个属性被赋值到另外一个变量中调用,this===window

栗子:

 

var obj = {

  x :10,

  fn:function(){

    console.log(this)

  }

}

obj.fn()   //当前对象

var newFn = obj.fn;  newFn() //window

第四种状况: 函数用apply() call() bind()调用时,this取得是传入的对象

他们的具体使用方法及不一样点单独总结了

https://www.cnblogs.com/emma-zhao/p/10687992.html

相关文章
相关标签/搜索