前端学习辑录(2):JS中this指向的问题
目录
- 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指向的问题相关推荐
- JavaScript面向对象(一)——JS OOP基础与JS 中This指向详解
前 言 学过程序语言的都知道,我们的程序语言进化是从"面向机器".到"面向过程".再到"面向对象"一步步的发展而来.类似于汇编语言这样的面 ...
- 【Node学习】—Node.js中模块化开发的规范
[Node学习]-Node.js中模块化开发的规范 Node.js 规定一个JavaScript就是一个模块,模块内部定义的变量和函数默认情况下在外部无法得到 模块化内部可以使用exports对象进行 ...
- 前端学习笔记(js基础知识)
前端学习笔记(js基础知识) JavaScript 输出 JavaScript 数据类型 常见的HTML事件 DOM 冒泡与捕获 流程控制语句 for..in 计时器 let,var,const的区别 ...
- 好程序员web前端学习路线分享css3中的渐进增强和降级
好程序员web前端学习路线分享css3中的渐进增强和降级,渐进增强和降级这两个概念是在 CSS3 出现之后火起来的.由于低级浏览器不支持 CSS3,但是 CSS3 特效太优秀不忍放弃,所以在高级浏览器 ...
- 前端学习辑录(1):js继承总结
js中的继承 一.原型继承 二.借用构造函数继承 三.组合继承 四.组合继承的优化 五.拷贝继承 总结 这是博主目前学习并掌握到的继承方式,并不能完整覆盖到所有的继承方式,会在学习中持续更新ヾ(◍°∇ ...
- 前端基础知识点:JS中的参数传递详解
JS语法中的传递参数,对于初学者是一个非常重要的概念.很多小伙伴在学习"值传递"和"引用传递"时,会有不少烦恼.今天我们就来通过各种姿势全方位剖析JS中的值传递 ...
- 中高级前端必须了解的--JS中的内存管理
前言 像C语言这样的底层语言一般都有底层的内存管理接口,比如 malloc()和free()用于分配内存和释放内存. 而对于JavaScript来说,会在创建变量(对象,字符串等)时分配内存,并且在不 ...
- 前端学习笔记——node.js
初识 Node.js 什么是 Node.js Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境. Node.js 中的 JavaScript 运行环境 注意: 浏 ...
- 关于js中this指向复习
简单说this指向 谁调用指向谁 1.对象.方法() 中,方法中的this指向的就是对象 2.普通函数中的 this 指向window,这是因为 window 是JS中的顶级对象,可以通过window ...
最新文章
- Oracle EBS:Package被锁,执行时卡住的解决办法
- [转]div里table居中的问题 Div与body顶部间隙
- 聊天工具简单实现(python 半双工聊天)
- 微服务实践(五):微服务的事件驱动数据管理
- java 对象等于_java 之类对象等于对象 | 学步园
- ASP.NET MVC 4 视图页去哪里儿
- log4j+mybatis打印日志文件
- 女朋友想进高校当老师,其实中学老师更适合他
- python点击屏幕_Python屏幕操作
- mybatis3源码1-初始化
- HDOJ--2112--HDU Today
- Linux小工具bc使用
- 数电2_2——逻辑函数的变换与化简
- 欧派caxa设计软件_欧派与数码大方携手,CAXA智能家居设计软件引领家居变革
- 华为笔记本软件商店_华为推出电脑版“应用市场”,免费无广告,再也不用担心垃圾软件...
- HDFS 透明加密使用、Keystore和Hadoop KMS、加密区域、透明加密关键概念和架构、KMS配置
- python常见运算符
- vite打包工具的介绍
- linux根文件系统配置,Linux学习笔记__ Linux根文件系统详解
- 云上数据泄露DLP技术有哪些变化
热门文章
- 阿里云 oss c/s上传下载工具 (windows)
- 推荐两款在线日程(任务)管理的站点
- centOS6.4 oracle11g RAC搭建
- 阳光可视液晶屏是什么? 阳光可视液晶屏和普通液晶屏的区别
- win7计算机-网络-intenet不通629,由win7系统的宽带连接提示的错误代码629的解决方法[详细]...
- 使用ESP8266配合0.96寸OLED显示AIDA64读取到的电脑状态信息
- 中国街头骗术大全(转贴)
- 笔记本linux装win7双系统,lenovo笔记本可以装win7和Linux双系统吗
- mysql特殊字符波浪号_mysql数据库特殊字符
- 【SpringBoot】写一个具有留言墙功能的JavaWeb