首页 > 编程语言 >JavaScript中的this指向问题

JavaScript中的this指向问题

时间:2024-08-01 11:51:10浏览次数:16  
标签:输出 fun6 console log 指向 JavaScript 问题 fun1 obj

<!DOCTYPE html> <html>   <head>     <meta charset="UTF-8" />     <title>Document</title>   </head>   <body>     <!--this问题     1. 当函数作为普通函数调用时,this 在非严格模式下指向全局对象(浏览器中是 window,Node.js 中是 global),在严格模式下则是 undefined,如1-1。     2. 当函数作为对象的普通函数调用时,this 指向该对象。     3. 箭头函数不会创建自己的 this,它会捕获其定义位置的 this 值(即词法作用域中的 this)     4. 在一个对象的方法中定义了一个箭头函数,箭头函数的 this 就是定义这个箭头函数的方法的 this,而不是调用这个箭头函数时的 this。     5. 当使用 new 关键字调用函数时(构造函数),this 指向新创建的实例对象。     6. 可以使用 call 或 apply 显式地指定 this 的值。     -->     <script type="text/javascript">       //1、普通函数       function fun1() {         console.log("fun1:", this);       }       fun1(); //输出window;       let a1 = fun1(); //输出window;       console.log(a1); //输出值为fun1中return的值,没有return则为undefined
      const obj = {         a: 10,         // 2、对象的方法         fun2: function () {           console.log("fun2:", this);         },         // 3、对象内的箭头函数         fun3: () => {           console.log("fun3:", this);         },         // 4、对象的方法中定义的箭头函数         fun4: function () {           const way = () => {             console.log("fun4-way:", this);           };           way(); //输出输出 obj对象         },       };
      obj.fun2(); // 输出obj对象       obj.fun3(); // 输出window;       obj.fun4(); // 输出obj对象,way是在fun4内定义的,所以way的this就是fun4的this,即obj对象
      //5. 构造函数(用new关键字调用的函数)       function fun5() {         this.name = "example";         console.log("fun5:", this);       }       const instance = new fun5(); // 输出实例对象fun5
      // 6、 call 和 apply       function fun6() {         console.log("fun6:",this);       }       const obj2 = { name: "example" };       fun6(); //为1情况,输出window       fun6.call(obj2); // 输出 obj2       fun6.apply(obj2); // 输出 obj2     </script>   </body> </html>

标签:输出,fun6,console,log,指向,JavaScript,问题,fun1,obj
From: https://www.cnblogs.com/dreamzhh/p/18336372

相关文章

  • C++对象析构顺序问题——由QObject::desroyed展开的思考
    C++对象析构顺序问题——由QObject::desroyed展开的思考C++析构函数执行的顺序是最先执行继承链最末端的子类的,最后执行顶层的基类的。而QObject::destroyed(QObject*obj=nullptr)信号在Qt文档中说是“在obj被完全析构时之前立即触发,并且不会被阻塞”。这里的“完全析......
  • JavaScript入门须知
    一、JavaScript概念1.javascript是一门跨平台,面向对象的脚本语言,用来控制网页行为,可使网页交互2.java和js完全不一样,无论是概念还是设计都是完全不一样的,但是它们的基础语法相似。3.在1995年由BrendanErich发明,于1997年成为ECMA的标准4.ECMA欧洲协会标准,ECMAScript(ES6)是......
  • Python 问题 如何创建在 PDF 中注册为剪切线的专色?
    我正在开发一个项目,需要我在图像周围创建一条剪切线,但在任何RIP程序(例如Versaworks或Flexi)上将其注册为实际剪切线时遇到困难。我尝试了很多不同的方法python库可以帮助解决这个问题,但我无法让它工作。我希望它像我们在Illustrator中所做的那样,创建一条名为CutConto......
  • 解决python自动化操作异常处理的问题
    在python自动化领域,往往要用到pyautogui,pywin32等模块实现自动化操作。然而,这种自动化操作,本身具有一定的局限性,其中最主要的一个问题就是,一旦执行结果不按照脚本预设的来执行,往往会抛出异常,导致程序中断。解决这个问题,主要有这么几种思路:第一,每一次操作后分情况讨论。这种方......
  • 子段和问题
    Abstract本文主要介绍各种序列子段和问题。P1最大子段和传送门Introduction首先来看一道经典例题,求一段序列的最大子段和Idea考虑动态规划,令dp[i]表示在取第i个数的情况下,前i个数所能得到的最大子段和,那么显然有dp[i]=max(dp[i-1]+a[i],a[i]),其中a[i]表......
  • JavaScript(四)——JavaScript 语法
    目录JavaScript语法JavaScript字面量JavaScript变量JavaScript操作符JavaScript语句JavaScript关键字JavaScript注释JavaScript数据类型JavaScript函数JavaScript字母大小写JavaScript字符集驼峰命名法小驼峰命名法大驼峰命名法(帕斯卡命名法)JavaS......
  • Dependency Injection: 如何解决依赖注入失败问题
    DependencyInjection:如何解决依赖注入失败问题......
  • 暗区突围pc端下载失败/卡正在初始化/连接伺服务器失败/问题解决方法
    暗区突围pc端下载失败/卡正在初始化/连接伺服务器失败/问题解决方法暗区突围pc端下载失败/卡正在初始化/连接伺服务器失败/问题解决方法暗区突围也可以在电脑上游玩拉,暗区突围PC端上线在即,本次上线就是全球抢先测试了,很多小伙伴在游戏下载过程中遇到了很多问题,比如:下载失......
  • javascript(三)
    五、事件发生在HTML元素上的事情,当在HTML页面中使用JavaScript时,JavaScript可以触发这些事件1.常用事件事件描述onchangeHTML元素改变onclick点击onmouseover鼠标移入onmouseout鼠标移出onkeydown按下键盘onload浏览器已完成页面的加载......
  • 【MySQL】事务 【上】{事务的版本支持 事务提交方式 实验结论 用户问题 如何理解隔离
    文章目录1.引入事务事务的版本支持事务提交方式实验结论用户问题2.隔离性如何理解隔离性隔离级别查看与设置隔离性4.四种隔离级别的场景读未提交读已提交可重复读串行化1.引入事务当客户端A检查还有一张票时,将票卖掉,还没有执行更新数据库的时候,客户端B检查了票数......