js 的this指向问题
2024-09-06 14:57:56
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
最新文章
- CozyRSS开发记录21-默认RSS源列表
- java服务器端编程
- iOS.DistributionApp.1-mobile-provision-file[draft]
- 比较全的JavaScript倒计时脚本[xyytit]
- Writing a simple Lexer in PHP/C++/Java
- BZOJ2330 糖果题解 查分约束
- C++ Daily 《1》----关于对象
- Neo4j图数据库管理系统开发笔记之三:构建安全的RMI Service(Server)
- select resharper shortcuts scheme
- AppCan移动平台,开发者是这样用的……
- HttpClient支持使用代理服务器以及身份认证
- HDOJ 4745 Two Rabbits DP
- x86_64的内存映射
- Ubuntu16.04安装mongodb
- DBCP和C3P0使用--未完善
- javascript parseint
- linux安装windows启动盘
- .NetCore2.1 WebAPI 根据swagger.json自动生成客户端代码
- HDU ACM 1856 More is better(并查集)
- Java第09次实验(IO流)
热门文章
- @Transactional注解事务
- kubernetes1.4新特性:支持Docker新特性
- Validation异常:No validator could be found for constraint '.....' validating type 'java.lang.Integer'.
- thinkphp 公用函数
- Entity Framework 映射问题
- UVa 10599【lis dp,记忆化搜索】
- Plupload的上传机制
- 25-3 requests模块的cookie和代理操作
- 13 -1 BOM和定时器
- 给博客添加rss订阅