关于js中this指向的总结
2024-09-18 00:00:22
js中this指向问题一直是个坑,之前一直是懵懵懂懂的,大概知道一点,但一直不知道各种情况下指向有什么区别,今天亲自动手测试了下this的指向。
1.在对象中的this
对象中的this指向我们创建的对象,例如:
var obj ={
ccc : 1122,
ddd : 2233,
ded : function(){
console.log(this);
} ,
fff : function(){
console.log(this === obj );
}
}
obj.ded();
obj.fff();
在chrome中执行的答案如下:
上图我们可以看出我们执行obj对象下的ded函数时,打印出来的事Object对象里面的所有属性,展示这个对象
可以看到obj对象包含的方法和属性都包含在this对象下面,再运行fff函数,把this和obj对象进行比较,可以看出这两个是恒等的,所以在对象里的this指向这个对象。
2.直接调用函数时的this指向
先创建一个函数:
function main(){
this.aad = 234;
console.log(this);
}
main();
运行效果如下:
可以看到我们打印出来的this对象指向全局变量window,而创建的aad变量直接包含在了window对象下面了,所以直接调用函数时this是指向window对象的。
3.构造函数中的this指向
当我们创建一个构造函数时,并且实例化一个对象时,this的指向哪里呢?先创建一个函数
function main(){
this.aad = 234;
this.def = function(){
console.log(this);
};
this.foo = function(){
console.log(this === xxx);
};
this.xoo = function(){
console.log(this === main);
};
}
var xxx = new main();
xxx.def();
xxx.foo();
xxx.xoo();
可以看出xxx.def函数还是指向main函数,但这只是把上下文给打印出来了,但当我们打印this与构造函数以及实现对象比较时就可以看出区别了,与构造函数main比较出来的值是false;与xxx函数比较时显示是true,所以构造函数this事指向当前实例化对象的。
这就是我关于this学习的总结,希望能给需要的人点帮助,然后有啥不足希望有大神能指点出来。
最新文章
- vs无法调试的时候
- JEE , EJB概念深入概括
- TypeScript学习笔记(四):函数
- 利用Tree命令生成磁盘文件列表
- Unity3D之MeleeWeaponTrail武器轨迹插件的使用
- 修改SQL Server 排序规则 (未能排它地锁定数据库以执行该操作)
- 编译Android源代码与内核总结
- 使用Unity创建塔防游戏(Part2)
- 详细分析apache httpd反向代理的用法
- Codeforces Round #432 Div. 1 C. Arpa and a game with Mojtaba
- 消息中间件 MQ
- 第74节:Java中的Cookie和Session
- IronPython初体验
- [MySQL学习]STRICT_ALL_TABLES相应的OUT of RANGE VALUE FOR COLUMN和DATA truncated FOR COLUMN
- C#【结对编程作业】小学数学习题助手
- 禁止网站被别人通过iframe引用
- [转]IISExpress配置使其能通过IP访问方法
- debian8.4 ubuntu14.04双系统_debian8.4硬盘安装
- 杨辉三角(Pascal Triangle)的几种C语言实现及其复杂度分析
- 解决 php提交表单到当前页面,刷新会重复提交 的问题
热门文章
- 怎么在自己的windows上创建虚拟机(linux centos7)
- C++雾中风景18:C++20, 从concept开始
- ElasticSearch集成SpringBoot与常见使用方法
- java多线程中常用指令
- *****又错一道,不知道为啥。。。 ybt【例5.19】字符串判等
- kubernetes如何强制删除namespace
- Go 语言控制台输入&;生成随机数
- 内网渗透----Linux下信息收集
- [root-me](web-client)write up 一个大坑怎么填啊
- 数字IC笔试题-芯源