码迷,mamicode.com
首页 > 其他好文 > 详细

this

时间:2019-12-07 16:02:26      阅读:74      评论:0      收藏:0      [点我收藏+]

标签:doc   var   log   bind   window   his   span   使用   cal   

this:执行上下文,this一般存在于函数中,表示当前函数的执行上下文,如果函数没有执行,那么this没有内容,只有函数在执行后this才有绑定

1.默认执行:fn(): 全局作用域或者普通函数中this指向window,严格模式指向undefined

例子:  function fn(){

      "use strict"
      console.log(this)
      }
      fn()

2.通过对象执行(通过上下文对象执行,隐式执行)

 

function fn(){
console.log(this)
}
var a = 10;
var obj = {
a:20,
b:fn
}
obj.b();

var obj2 = {
a:30,
b:obj.b
}

3.显式执行(通过函数的方法bind执行):指定的是谁,就是谁
function fn(){
console.log(this)
}
var f = fn.bind(123);
f();

 找回隐式丢失的this,其实就是使用显式执行,强行绑定
setTimeout(obj.b.bind(obj), 3000);

 

 谁执行了this所在的函数,this就是谁

 场景:
 1.默认执行:非严格模式下指向window
  window || undefined
 2.隐式执行:通过任意对象执行
   直接的执行对象
 3.显式执行:通过函数的bind或call或apply执行
   写谁就谁

 

function fn(){
console.log(this)
}
var obj = {}
obj.fn = fn;

obj.fn();         //obj

var obtn = document.getElementById("btn");
obtn.onclick = fn;
     点击时          //obtn

fn.bind("hello")();       //"hello"

var f = fn.bind(obj);
f();        //obj

fn();              //window


4.构造函数执行(通过new执行)   



 

 

this

标签:doc   var   log   bind   window   his   span   使用   cal   

原文地址:https://www.cnblogs.com/wss521/p/11439163.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!