this指向的,永远只可能是对象!

this指向谁,永远不取决于this写在哪!而是取决于函数在哪调用。

this指向的对象,我们称之为函数的上下文context,也叫函数的调用者。

1:通过函数名直接调用:this指向window

function func(){
console.log(this);
} //① 通过函数名()直接调用:this指向window
func(); // this--->window

2:通过对象.函数名()调用的:this指向这个对象

function func(){
console.log(this);
}
//② 通过对象.函数名()调用的:this指向这个对象
// 狭义对象
var obj = {
name:"obj",
func1 :func
};
obj.func1(); // this--->obj // 广义对象
document.getElementById("div").onclick = function(){
this.style.backgroundColor = "red";
}; // this--->div

函数作为数组的一个元素,通过数组下标调用的:this指向这个数组

function func(){
console.log(this);
}
//③ 函数作为数组的一个元素,通过数组下标调用的:this指向这个数组
var arr = [func,1,2,3];
arr[0](); // this--->arr

函数作为window内置函数的回调函数调用:this指向window( setInterval setTimeout 等)

function func(){
console.log(this);
} //④ 函数作为window内置函数的回调函数调用:this指向window
setTimeout(func,1000);// this--->window
//setInterval(func,1000);

函数作为构造函数,用new关键字调用时:this指向新new出的对象

function func(){
console.log(this);
}
//⑤ 函数作为构造函数,用new关键字调用时:this指向新new出的对象
var obj = new func(); //this--->new出的新obj

最新文章

  1. CozyRSS开发记录21-默认RSS源列表
  2. java服务器端编程
  3. iOS.DistributionApp.1-mobile-provision-file[draft]
  4. 比较全的JavaScript倒计时脚本[xyytit]
  5. Writing a simple Lexer in PHP/C++/Java
  6. BZOJ2330 糖果题解 查分约束
  7. C++ Daily 《1》----关于对象
  8. Neo4j图数据库管理系统开发笔记之三:构建安全的RMI Service(Server)
  9. select resharper shortcuts scheme
  10. AppCan移动平台,开发者是这样用的……
  11. HttpClient支持使用代理服务器以及身份认证
  12. HDOJ 4745 Two Rabbits DP
  13. x86_64的内存映射
  14. Ubuntu16.04安装mongodb
  15. DBCP和C3P0使用--未完善
  16. javascript parseint
  17. linux安装windows启动盘
  18. .NetCore2.1 WebAPI 根据swagger.json自动生成客户端代码
  19. HDU ACM 1856 More is better(并查集)
  20. Java第09次实验(IO流)

热门文章

  1. @Transactional注解事务
  2. kubernetes1.4新特性:支持Docker新特性
  3. Validation异常:No validator could be found for constraint '.....' validating type 'java.lang.Integer'.
  4. thinkphp 公用函数
  5. Entity Framework 映射问题
  6. UVa 10599【lis dp,记忆化搜索】
  7. Plupload的上传机制
  8. 25-3 requests模块的cookie和代理操作
  9. 13 -1 BOM和定时器
  10. 给博客添加rss订阅