1.事件委托

概念:利用冒泡原理,子元素要做的事情交给父元素做

场景:ul和li标签,当每个li标签都需要有事件触发,如果给每一个li标签添加,当遇到li标签要增加或者减少的时候。监听它的增加或者减少是一件非常麻烦的事情,所以。通过在ul上面添加事件。通过一e.target获取当前对象。注意区分e.target与e.currenttarget

2.浅拷贝与深拷贝

概念:浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。但深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,修改新对象不会改到原对象

用法:

浅拷贝

function simpleClone(initalObj) {

      var obj = {};    for ( var i in initalObj) {obj[i] = initalObj[i];}    return obj;}或者Object.assign()深拷贝用JSON.stringify把对象转成字符串,再用JSON.parse把字符串转成新的对象
var obj2 = JSON.parse(JSON.stringify(obj1));使用Object.create()方法递归
var deepCopy= function(source) { 
var result={};
for (var key in source) {
      result[key] = typeof source[key]===’object’? deepCoyp(source[key]): source[key];
   } return result;
}3.关于let和varEs5中存在函数作用域和全局作用域。如果在函数中定义的var。变量提升最多也只会提升在函数上。不会超过函数。   Es6中多了一个 块级作用域也就是let。let不允许重复定义。不允许在定义之前使用,否则会报错,出现暂时性死区。

4.关于apply,call,bindapply和call用法类似,都是用另外一个对象替换当前对象(每处使用都可以用这个解释),区别是参数不同。A.apply(B,[args1,args2])用B对象替换A对象。后面的参数是数组。apply会把后面的数组转换成一个个的参数。可以利用此点来做其他巧妙的操作。比如fun.apply(null,arr)把数组转为函数需要的参数

function f(x,y){
console.log(x,y)
}
f.apply(null,[1,3])

es6可以使用(...)扩展运算符,即:f(...[1,3])同理计算最大值Math.max。apply(null,arr)继承Parent.call(this)call巧用Array.prototype.slice.call(args)将args装换成数组,args必须是具有length属性的类数组对象至于bind,会返回一个新的函数,它不会立即执行,需要调用一下。而call,apply会立即实行。

5.js的运行机制,解析机制js解析:js是一边编译一边执行,是非编译型语言。声明变量和函数会提升js运行机制:js是单线程的,event loop是js执行机制为什么js是单线程的:如果是多线程,同时操作dom元素,浏览器该听谁的?为什么要异步:如果只有同步,一条线程,那么如果程序执行非常久,就会给用户造成“卡顿”现象实现:要阐明js运行机制,必须结合同步异步,宏任务微任务来理解

js同步进入主线程,异步的先进入event table,达到触发条件,进入event queue,等主线程空闲就会来event queue来看是否有课执行的

宏任务):包括整体代码script,setTimeout,setInterval微任务):Promise.then等,process.nextTick

浏览器先执行一轮宏任务,在此宏任务中遇到同步的都立即执行,遇到另一轮宏任务(或者异步)推入到queue,微任务也推入到另一微任务queue,宏任务执行完后,执行微任务queue,再去执行新一轮宏任务

<script>

setTimeout(function(){
console.log(1)
},0)
new Promise(function exec(resolve){
console.log(2)
for(let i=0;i<1000;i++){
console.log("66")

}
console.log(3)
}).then(function(){
console.log(4)
})
console.log(5)

</script>先执行script宏任务,遇到setTimeout推入栈,执行promise内同步任务,将微任务.then内容推入微任务栈,继续执行完所有同步任务,后执行微任务栈,在接着进入下一轮宏任务栈执行setTimeout

6.window.onload和document.ready区别document.ready是等所有的dom树加载完后执行,可以多次出现window.onload是dom树加载完后和所有文件加载完后执行,只能出现一次window.onload后执行相对于documen.ready

7.立即执行函数: (function(){...})()传统的写法是声明与执行分开,这样会污染全局空间立即执行函数其实是把函数声明转成表达式,然后执行。
var foo = function () {...};    // 这就不是定义,而是表达式了。 foo();相当于
(function foo() {...})    // 这里是故意换行,实际上可以和下面的括号连起来 ();或者
(function foo() {...}())

或者
!function foo() {...}();
或者
+function foo() {...}();
或者
void function foo() {...}();
 
 
 
 

转载于:https://www.cnblogs.com/sisi2020/p/9246269.html

2018/06/30这段时间的随笔记忆:遇到概念模糊的js问题相关推荐

  1. 微云存照片会变模糊吗_QQ相册里的照片,为什么放一段时间就会变模糊?今天可算知道了...

    大家好,我是每天分享生活小趣闻的沙拉.祝大家新年好,最近天气越来越冷要注意添衣哦,不然冻着了沙拉会伤心的.本期是给大家普及一些关于"QQ相册里的照片,为什么放一段时间就会变模糊?" ...

  2. 当前时间加30分钟_男性早晨坚持慢跑30分钟,一段时间后,或许这些变化不请自来...

    男性早晨坚持慢跑30分钟,一段时间后,或许这些变化不请自来 随着现在社会的发展,人们的思想也会有很大的变化,很多的人都开始了养生的意识,而且有的人要改变了一些不良的生活饮食方面的习惯,抽出一段时间来通 ...

  3. kafka topic 一段时间不消费_全网最通俗易懂的 Kafka 入门

    众所周知,消息队列的产品有好几种,这里我选择学习Kafka的原因,无他,公司在用. 我司使用的是Kafka和自研的消息队列(Kafka和RocketMQ)改版,于是我就想学学Kafka这款消息队列啦. ...

  4. php ip 短时间 重复,php 限制同一个IP 一段时间不能评论多次,能给我详细解决的...

    php 限制同一个IP 一段时间不能评论多次,能给我详细解决的 mip版  关注:163  答案:3  悬赏:30 解决时间 2021-01-25 15:27 已解决 2021-01-25 05:54 ...

  5. 百万年薪背后 是人工智能领域泛起的人才泡沫 2017年07月04日 06:30 PingWest 微博 微信 空间 分享 添加喜爱 //d1.sina.com.cn/201706/26/14587

    百万年薪背后 是人工智能领域泛起的人才泡沫 2017年07月04日 06:30 PingWest 微博微信空间分享添加喜爱 (原标题:百万年薪背后 是人工智能领域不断泛起的人才泡沫) 应采访者要求,戴 ...

  6. 10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第5天 2018/10.30

    10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第5天 2018/10.30 1. 第4次周计划概览 2. 今日学习成果 3. 今日时间表 4. 今日反思 今天 ...

  7. down 网卡端口周期性的up_down 网卡端口周期性的up_端口每隔一段时间就就会不停up/down,是端口硬件故障了吗?......

    本帖最后由 xy411381121 于 2018-9-12 15:04 编辑 为什么交换机的端口在短时间内会反复up/down啊?而且今天这段时间是这几个端口,换个时间段又换成其他端口这样反复up/d ...

  8. 为什么要低温保存_新酒为什么要贮存一段时间才能喝?瓶装白酒这样保存最好!...

    点击蓝字关注我们 <消费评论>全国统一刊号:CN42-1894/F 酒丨问丨千丨知 ▽ ▽ 俗话说:白酒三分酿七分藏,白酒的品质三分在于酿造工艺,七分在于后期的储藏,可见储藏对于白酒品质是 ...

  9. plsql objects 过一段时间就会未连接oracle_记一次生产数据库故障排查--连接管理等待事件...

    概述 最近HR数据库比较慢,拿了其中一段时间的awr报告来分析,发现有一个等待事件:connection management call elapsed time,虽然占比不是很大,不过也是有点奇怪, ...

  10. php 间隔时间执行任务,PHP间隔一段时间执行代码的方法

    PHP间隔一段时间执行代码的方法 发布于 2015-11-16 18:26:46 | 230 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...

最新文章

  1. Matlab 自带机器学习算法汇总
  2. 成功解决bash syntax error near unexpected token from
  3. sql union 与多个order by 一起使用
  4. DM达梦创建表空间用户
  5. python 计算机基础
  6. Abp vnext 特征(Features)
  7. denyhosts、中文文档乱码、端口占用查询
  8. Statement violates GTID consistency: CREATE TABLE ... SELECT.
  9. sql azure 语法_将SQL工作负载迁移到Microsoft Azure:服务选择
  10. h5支付不能打开支付宝 ios_iOS支付宝H5支付无法返回APP解决方案
  11. 这次刷爆欧美“脸书圈”的是,中国天津
  12. R 回归 虚拟变量na_R语言 | 回归分析(一)
  13. 浅析360在系统的进程自保护及突破
  14. java 自定义控件_自定义控件的开发
  15. 使用matlab显示图像的一个坑:文件名或 URL 参数必须为字符向量、uigetfile出现要串联的数组的维度不一致
  16. 海思SD3403/SS928开发(三)红外DC接入
  17. Android 编译命令 make j8 21 | tee build.log 解释
  18. 专业系统维护:CleanMyMac X for mac
  19. 智慧解析第09课:路西法祭品
  20. jzoj4210. 【五校联考1day1】我才不是萝莉控呢(哈夫曼树)

热门文章

  1. MPLS virtual private network中MCE介绍
  2. MySQL外键约束详解
  3. 正则表达式和通配符的异同
  4. HDOJ--1248--寒冰王座
  5. Mybatis动态数据源
  6. 姚前:分布式账本与传统账本的异同及其现实意义
  7. 自动外呼——设计思路整理篇
  8. docker运行Linux性能怎么样,Docker容器OSX与Linux的性能差异
  9. Spring后端接收表单方式上传的文件和数据
  10. 14的虚拟机可以用在15上面吗_【Linux虚拟机】在Windows上安装Linux虚拟机