关于Javascript中this的指向以及一些应用
来源:互联网 发布:商标域名 经销商品 编辑:程序博客网 时间:2024/06/07 14:39
关于Javascript中this的指向以及一些应用
本文中大部分观点来自 彻底理解js中this的指向,不必硬背 非常感谢作者
1. 关于this最重要的几个结论
情况1:如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window,这里需要说明的是在js的严格版中this指向的不是window,但是我们这里不探讨严格版的问题,你想了解可以自行上网查找。
情况2:如果一个函数中有this,这个函数有被上一级的对象所调用,那么this指向的就是上一级的对象。
情况3:如果一个函数中有this,这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象
情况4:如果return一个对象,则this指向该对象
具体的代码示例请看原文
2. 关于this的应用
- 链式调用
function Util () { this.chain = function (a) { this.tem = a return this } this.sum = function (b) { this.tem += b return this } this.sub = function (c) { this.tem -= c return this } this.value = function () { const tem = this.tem this.tem = undefined return tem }}var u = new Util()console.log(u.chain(1).sum(2).sum(3).sub(4).value()) //2
- 如上情况3,如果一个函数中有this,这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象
- 所以若要实现链式调用,就必须保证每次调用的方法都指向Util,此时只需在方法中return this就能实现,因为value的this指向sub,而sub的this指向第二个sum。。。以此类推,最终都指向的u,即一个Util实例(new 运算符会创建一个空对象,并讲Util的属性和方法都复制一份,最终赋值给u),这就实现了链式调用
阅读全文
0 0
- 关于Javascript中this的指向以及一些应用
- javaScript中关于this的指向
- JavaScript中setTimeout的作用域以及this指向问题
- javascript 中 this 的指向
- JavaScript中 this 的指向
- JavaScript中this的指向
- javascript中this的指向
- javaScript中this的指向
- Javascript中this的指向
- 关于JavaScript中this的一些理解
- 关于javascript的this指向问题
- JavaScript中this指向
- javascript中this的指向问题
- javascript中this指向问题的综合
- JavaScript中this的指向问题
- JavaScript中this的指向问题
- javascript中this对象的指向问题
- JavaScript中this的指向问题
- CoordinatorLayout源码解析之初识Behavior
- MFC中setimer和ontimer定时器函数到时间不能触发执行是因为WM_TIMER消息的优先级低
- linux php添加pdo_mysql 扩展时报错 fatal error: ext/mysqlnd/mysqlnd.h: No such file or directory
- tomcat8.0 startup报错java.util.logging.ErrorManager: 4
- Python学习(基本运算)
- 关于Javascript中this的指向以及一些应用
- 编程语言目录
- ActiveMQ集群示例
- 关于 dll 与目标工程的管理及若干注意事项
- 关于base64编码
- XGBoost 与 信用卡诈骗数据集 二
- Co-prime-容斥
- Oracle的pipelined函数实现高性能大数据处理
- TCP/IP簇——ICMP协议概述