浅谈js中的this
来源:互联网 发布:cisco mac acl 编辑:程序博客网 时间:2024/06/07 19:42
相信很多刚刚学习js的新手都会有同感,当看一段js代码时,发现里面有很多this,但是这些this到底是指向哪里却没有那么清楚,为了搞清楚这些this到底是什么情况,特地花点时间总结如下几点:
1.最普遍的this表示全局对象
// 1.this表示全局对象 var x = 1 function test1(){ this.x = 2; console.log(this.x); } test1();//输出为2
解析:设置全局变量x初始值为1,当调用函数test1()之后改变全局变量x的初始化值,故为2
2.对象方法中的this(这里this就指这个上级对象)
例1:
var name = "全局this"; var object = { name : "对象中this", getNameFunc : function(){ return function(){ return this.name; }; } }; console.log(object.getNameFunc()());//输出:全局this
例2:
var name = "全局this"; var object = { name : "对象中this", getNameFunc : function(){ var that = this; return function(){ return that.name; }; } }; console.log(object.getNameFunc()());//输出:对象中this
例3
var name = "全局this"; var object = { name : "对象中this", getNameFunc : function(){ var that = this; return function(){ return that.name+","+this.name; }; } }; console.log(object.getNameFunc()());//输出:对象中this,全局this
例4
function test2(){ console.log(this.y); } var obj = {}; obj.y = 2; obj.func= test2; obj.func();//输出2
解析:在例1中,直接this调用全局,而在例2中this表示函数的上一级对象,故此时的this是对象object;在例4中test2函数被赋值给对象obj,所以此时的this表示对象obj
3.构造函数调用(实际上也可以理解成是一个对象,跟2中一样)
var a = 1; function test3(){ this.a = 2; } var gz = new test3(); console.log(a);//输出1 console.log(this.a);//输出1 console.log(gz.a);//输出2
解析:当new test3()弄成一个新的对象的时候,test3里面的this指向的是gz,所有全局变量没有变化
阅读全文
0 0
- 浅谈js中的this
- 浅谈js中的this关键字
- 浅谈js中的this关键字
- [转帖]浅谈js中的this指针
- 浅谈js中的call,apply,bind方法中的this指针
- 浅谈JS中this
- js之浅谈this
- 浅谈 C++ 中的this 指针
- 浅谈C++中的this指针
- 浅谈Java中的This关键字
- 浅谈C++中的this指针
- 浅谈C++中的this指针
- js中的this
- js中的this关键字
- 关于js 中的 this
- js中的this详解
- js 中的this
- JS中的this
- 所有子集的和-LintCode
- 【工业物联网】一文了解如何实现新型工业化、制造强国(工业物联网白皮书2017)服务|金融|生产|物流应用案例
- 【工业物联网】工业物联网平台的“事前验尸报告”!
- 【智能零售】看商务部如何官方解读新零售
- HP-Socket v5.1.1 for Windows
- 浅谈js中的this
- 【数字化】信通院院长:数字浪潮与信息通信技术变革
- openCV学习笔记(三)--图像处理Image Processing
- 使用java创建一个简易的视屏播放器
- Java lambda 实现sort
- UDP协议的两个主要方法sendto和recvfrom详解
- 记 Ionic2混合开发遇到的坑
- super关键字
- Cookie和Session