浅谈JS中常见的问题(三)
往期文章目录
浅谈JS中常见的问题(一)
浅谈JS中常见的问题(二)
JS知识总结
- 往期文章目录
- 前言
- 11. 同步和异步的区别
- 12. JS 判断变量类型的几种方法
- 13. 如何阻止事件冒泡与默认事件
- 14. this指向的6种情况
- 15. JS的异步编程
- 总结
前言
If at first, the idea is not absurd, then there will be no hope for it.
如果一个想法一开始不荒谬,那么它就毫无希望。
------ 阿尔伯特·爱因斯坦
11. 同步和异步的区别
同步
同步的思想是:所有的操作都做完,才返回给用户。这样用户在线等待的时间太长,给用户一种卡死了的感觉(就是系统迁移中,点击了迁移,界面就不动了,但是程序还在执行,卡死了的感觉)。这种情况下,用户不能关闭界面,如果关闭了,即迁移程序就中断了。
异步
将用户请求放入消息队列,并反馈给用户,系统迁移程序已经启动,你可以关闭浏览器了。然后程序再慢慢地去写入数据库去。这就是异步。但是用户没有卡死的感觉,会告诉你,你的请求系统已经响应了。你可以关闭界面了。
同步和异步本身是相对的
同步就相当于是 当客户端发送请求给服务端,在等待服务端响应的请求时,客户端不做其他的事情。当服务端做完了才返回到客户端。这样的话客户端需要一直等待。用户使用起来会有不友好。
异步就是,当客户端发送给服务端请求时,在等待服务端响应的时候,客户端可以做其他的事情,这样节约了时间,提高了效率。
存在就有其道理 异步虽然好 但是有些问题是要用同步用来解决,比如有些东西我们需要的是拿到返回的数据在进行操作的。这些是异步所无法解决的。
12. JS 判断变量类型的几种方法
(1)最常见的判断方法:typeof
(2)已知对象类型: instanceof
(3)对象原型链判断方法: prototype 通用但很繁琐
(4)根据对象的构造器constructor进行判断
(5)严格运算符: ===
13. 如何阻止事件冒泡与默认事件
1、event.stopPropagation()方法
event.stopPropagation()方法阻止事件冒泡到父元素,阻止任何父事件处理程序被执行。不让事件向documen上蔓延,但是默认事件任然会执行,当你掉用这个方法的时候,如果点击一个连接,这个连接仍然会被打开。
提示:请使用 event.isPropagationStopped()方法来检查指定的事件上是否调用了该方法。
2、event.preventDefault()方法
取消事件的默认动作。该方法将通知 Web 浏览器不要执行与事件关联的默认动作(如果存在这样的动作)。
例如:
form表单如果 type 属性是 “submit”,在事件传播的任意阶段可以调用任意的事件句柄,通过调用该方法,可以阻止提交表单。a元素中href连接,如果调用此方法是,连接不会被打开。
注意:
如果 Event 对象的 cancelable 属性是 fasle,那么就没有默认动作,或者不能阻止默认动作。无论哪种情况,调用该方法都没有作用。
该方法会发生冒泡,冒泡会传递到上一层的父元素。
3、return false
这个方法比较暴力,它会同时阻止事件冒泡和默认事件,写上此代码,连接不会被打开,事件也不会传递到上一层的父元素;
可以理解为return false就等于同时调用了event.stopPropagation()和event.preventDefault()
细分的话
IE浏览器:
window.event.cancelBubble = true;//停止冒泡
window.event.returnValue = false;//阻止事件的默认行为
Firefox浏览器:
event.preventDefault();// 取消事件的默认行为
event.stopPropagation(); // 阻止事件的传播
参考内容:文章1,文章2
14. this指向的6种情况
全局中的函数和全局变量可以看作是window的方法和属性所以全局函数中的this指向window;
方法中的this指向该方法所指的对象;
this指向函数运行时所属的对象;
this不指函数本身,也不指函数所对的作用域,指向调用此函数的对象。
this指向分为六种情况
1)全局函数中的this,在全局环境下调用的时候指向window;
注意:如果全局函数内部是严格模式,则在全局环境下不指向window,指向undefined
2)函数被赋值给某个事件时,指向对象所属的对象;
3)this在对象方法中使用时,指向的是方法所属的对象;
4)在闭包中this指向window;
5)在构造函数中以及构造函数的原型对象中的this,都指向构造函数的实例对象;
var arr=new Array( ) Array是构造函数 arr实例对象
6)箭头函数中的this指向箭头函数所在(定义)的执行环境。
15. JS的异步编程
因为js是单线程的。浏览器遇到etTimeout 和 setInterval会先执行完当前的代码块,在此之前会把定时器推入浏览器的待执行时间队列里面,等到浏览器执行完当前代码之后会看下事件队列里有没有任务,有的话才执行定时器里的代码。
常用的方式:setTimeout setIntervel ajax Promise asyc/await
宏任务(marcotask)微任务(microtask) 的执行顺序
先执行宏任务,然后在执行微任务;
JS中的宏任务:setTimeout setIntervel ajax
JS中的微任务:Promise.then Promise.catch await(可以理解成Promise.then)
JS的执行顺序是先同步 再异步;同步执行完成之前 异步不会执行
EventLoop 事件循环
EventQueue 事件队列
总结
本文简单总结了一下有关JS的部分知识点,希望能对你有所帮助。
浅谈JS中常见的问题(三)相关推荐
- java 中的排序_浅谈java中常见的排序
浅谈java中常见的排序 学过java的人都知道,排序这一部分初次接触感觉还是有点难以理解,很多地方也会用到.然而,在java中常见的排序方法:冒泡排序,选择排序,插入排序等等.下面就让我们一起揭开他 ...
- js架构设计模式——由项目浅谈JS中MVVM模式
1. 背景 最近项目原因使用了durandal.js和knockout.js,颇有受益.决定写一个比较浅显的总结. 之前一直在用SpringMVC框架写后台,前台是用JSP+JS+标签库,算是很 ...
- 由项目浅谈JS中MVVM模式
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/. 1. 背景 最近项目原因使用了durandal.js和knock ...
- 浅谈JS中的escape,URLEncode与encodeURIComponent
在JS中,escape,URLEncode与encodeURIComponent都是编码方法,一般用于对URL进行编码 为什么要使用编码方法 网络标准RFC 1738做了硬性规定: "... ...
- 浅谈js中的this
js中,this自动引用正在调用的当前方法 . 前的对象.简而言之,this就是指向当前对象.举例说明: 1. obj.fun()中如果出现this.那么,this就是指向obj 2. new Fun ...
- 浅谈js中的var和function变量提升,var声明变量提升,块级作用域中的函数提升
1.首先最常见的一种变量提升 console.log(a); //输出 undefinedvar a=10;console.log(a) // 输出 10 var 有提升的作用其实上面的代码会变成会变 ...
- 浅谈js中的异步编程
转载自品略图书馆 http://www.pinlue.com/article/2020/07/0412/3110968788347.html JS异步编程模型 在理解js异步编程时, 我们先再心中想一 ...
- 浅谈C#中常见的委托Func,Action,Predicate(转)
一提到委托,浮现在我们脑海中的大概是听的最多的就是类似C++的函数指针吧,呵呵,至少我的第一个反应是这样的. 关于委托的定义和使用,已经有诸多的人讲解过,并且讲解细致入微,尤其是张子阳的那一篇.我就不 ...
- java中parseint函数_浅谈 js中parseInt函数的解析
首先还是从很热门的实例parseInt("09")==0说起. parseInt(number,type)这个函数后面如果不跟第2个参数来表示进制的话,默认是10进制. 比如说pa ...
最新文章
- Deadline来了,如何按时结题?
- linux日常管理3
- netapp学习(五)---创建volume
- 让远程协助在局域网里无处不在
- android获取网络图片
- 实现贝叶斯分类器_机器学习实战项目-朴素贝叶斯
- P5170 【模板】类欧几里得算法(类欧)
- hdu 4946 凸包注意重点
- powerdesigner2
- 个人信息保护呼吁“基本法”
- 2020 最烂密码 TOP 200 大曝光,霸榜的仍旧是 123456!
- GoAhead服务器编程
- java 本地文件上传到服务器,java本地文件上传到远程服务器
- 如何在论文后面插参考文献
- 计算机学院早操规定,宜宾学院早操管理规定
- css 侧栏跟随_如何实现博客的侧栏跟随(滚动条)效果
- 游戏图形测试软件,今日共有3款免费测试网络游戏(组图)
- html5 鼠标动画效果,7 个让人惊叹的 HTML5 鼠标动画
- 如何做好项目的需求与业务调研
- 问题 A: 电路维修