目录

  • this指向的不同场景:
    • 一、普通函数调用
    • 二、定时器函数
    • 三、构造函数调用
    • 四、对象方法调用
    • 五、原型对象调用
  • 总结

this指向的不同场景:

一、普通函数调用

普通函数中的this是谁?===>window

   function f1() {console.log(this);//window}f1();

严格模式下的普通函数中的this?

   "use strict";//严格模式function f1() {console.log(this);}f1();//undefinedwindow.f1(); //==>window//严格模式下调用函数,它会认为函数就是方法//方法通过对象调用,你的对象没写

二、定时器函数

   window.setInterval(function () {console.log(this); //window},1000);

三、构造函数调用

     function Person(){console.log(this);//Person==>实例对象}var per=new Person();console.log(per);

四、对象方法调用

     function Person(){console.log(this);//Person==>实例对象this.sayHi=function () {console.log(this);//Person==>当前实例对象};}var per=new Person();console.log(per);per.sayHi();

五、原型对象调用

 function Person(){console.log(this);//Person==>实例对象this.sayHi=function () {console.log(this);//Person==>实例对象};}Person.prototype.eat=function () {console.log(this);//Person==>实例对象};var per=new Person();console.log(per);per.sayHi();per.eat();

总结

本章总结了js中经常见到的this指向问题,汇总如下表:

调用方式 非严格模式 备注事项
普通函数 window 严格模式下是undefined
定时器函数 window
构造函数 实例对象
对象方法 该方法所属对象 临近的对象
原型对象方法 实例对象
事件绑定方法 绑定事件对象

以上。

前端学习辑录(2):JS中this指向的问题相关推荐

  1. JavaScript面向对象(一)——JS OOP基础与JS 中This指向详解

    前  言 学过程序语言的都知道,我们的程序语言进化是从"面向机器".到"面向过程".再到"面向对象"一步步的发展而来.类似于汇编语言这样的面 ...

  2. 【Node学习】—Node.js中模块化开发的规范

    [Node学习]-Node.js中模块化开发的规范 Node.js 规定一个JavaScript就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到 模块化内部可以使用exports对象进行 ...

  3. 前端学习笔记(js基础知识)

    前端学习笔记(js基础知识) JavaScript 输出 JavaScript 数据类型 常见的HTML事件 DOM 冒泡与捕获 流程控制语句 for..in 计时器 let,var,const的区别 ...

  4. 好程序员web前端学习路线分享css3中的渐进增强和降级

    好程序员web前端学习路线分享css3中的渐进增强和降级,渐进增强和降级这两个概念是在 CSS3 出现之后火起来的.由于低级浏览器不支持 CSS3,但是 CSS3 特效太优秀不忍放弃,所以在高级浏览器 ...

  5. 前端学习辑录(1):js继承总结

    js中的继承 一.原型继承 二.借用构造函数继承 三.组合继承 四.组合继承的优化 五.拷贝继承 总结 这是博主目前学习并掌握到的继承方式,并不能完整覆盖到所有的继承方式,会在学习中持续更新ヾ(◍°∇ ...

  6. 前端基础知识点:JS中的参数传递详解

    JS语法中的传递参数,对于初学者是一个非常重要的概念.很多小伙伴在学习"值传递"和"引用传递"时,会有不少烦恼.今天我们就来通过各种姿势全方位剖析JS中的值传递 ...

  7. 中高级前端必须了解的--JS中的内存管理

    前言 像C语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()用于分配内存和释放内存. 而对于JavaScript来说,会在创建变量(对象,字符串等)时分配内存,并且在不 ...

  8. 前端学习笔记——node.js

    初识 Node.js 什么是 Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 中的 JavaScript 运行环境 注意: 浏 ...

  9. 关于js中this指向复习

    简单说this指向 谁调用指向谁 1.对象.方法() 中,方法中的this指向的就是对象 2.普通函数中的 this 指向window,这是因为 window 是JS中的顶级对象,可以通过window ...

最新文章

  1. Oracle EBS:Package被锁,执行时卡住的解决办法
  2. [转]div里table居中的问题 Div与body顶部间隙
  3. 聊天工具简单实现(python 半双工聊天)
  4. 微服务实践(五):微服务的事件驱动数据管理
  5. java 对象等于_java 之类对象等于对象 | 学步园
  6. ASP.NET MVC 4 视图页去哪里儿
  7. log4j+mybatis打印日志文件
  8. 女朋友想进高校当老师,其实中学老师更适合他
  9. python点击屏幕_Python屏幕操作
  10. mybatis3源码1-初始化
  11. HDOJ--2112--HDU Today
  12. Linux小工具bc使用
  13. 数电2_2——逻辑函数的变换与化简
  14. 欧派caxa设计软件_欧派与数码大方携手,CAXA智能家居设计软件引领家居变革
  15. 华为笔记本软件商店_华为推出电脑版“应用市场”,免费无广告,再也不用担心垃圾软件...
  16. HDFS 透明加密使用、Keystore和Hadoop KMS、加密区域、透明加密关键概念和架构、KMS配置
  17. python常见运算符
  18. vite打包工具的介绍
  19. linux根文件系统配置,Linux学习笔记__ Linux根文件系统详解
  20. 云上数据泄露DLP技术有哪些变化

热门文章

  1. 阿里云 oss c/s上传下载工具 (windows)
  2. 推荐两款在线日程(任务)管理的站点
  3. centOS6.4 oracle11g RAC搭建
  4. 阳光可视液晶屏是什么? 阳光可视液晶屏和普通液晶屏的区别
  5. win7计算机-网络-intenet不通629,由win7系统的宽带连接提示的错误代码629的解决方法[详细]...
  6. 使用ESP8266配合0.96寸OLED显示AIDA64读取到的电脑状态信息
  7. 中国街头骗术大全(转贴)
  8. 笔记本linux装win7双系统,lenovo笔记本可以装win7和Linux双系统吗
  9. mysql特殊字符波浪号_mysql数据库特殊字符
  10. 【SpringBoot】写一个具有留言墙功能的JavaWeb