2018/06/30这段时间的随笔记忆:遇到概念模糊的js问题
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问题相关推荐
- 微云存照片会变模糊吗_QQ相册里的照片,为什么放一段时间就会变模糊?今天可算知道了...
大家好,我是每天分享生活小趣闻的沙拉.祝大家新年好,最近天气越来越冷要注意添衣哦,不然冻着了沙拉会伤心的.本期是给大家普及一些关于"QQ相册里的照片,为什么放一段时间就会变模糊?" ...
- 当前时间加30分钟_男性早晨坚持慢跑30分钟,一段时间后,或许这些变化不请自来...
男性早晨坚持慢跑30分钟,一段时间后,或许这些变化不请自来 随着现在社会的发展,人们的思想也会有很大的变化,很多的人都开始了养生的意识,而且有的人要改变了一些不良的生活饮食方面的习惯,抽出一段时间来通 ...
- kafka topic 一段时间不消费_全网最通俗易懂的 Kafka 入门
众所周知,消息队列的产品有好几种,这里我选择学习Kafka的原因,无他,公司在用. 我司使用的是Kafka和自研的消息队列(Kafka和RocketMQ)改版,于是我就想学学Kafka这款消息队列啦. ...
- php ip 短时间 重复,php 限制同一个IP 一段时间不能评论多次,能给我详细解决的...
php 限制同一个IP 一段时间不能评论多次,能给我详细解决的 mip版 关注:163 答案:3 悬赏:30 解决时间 2021-01-25 15:27 已解决 2021-01-25 05:54 ...
- 百万年薪背后 是人工智能领域泛起的人才泡沫 2017年07月04日 06:30 PingWest 微博 微信 空间 分享 添加喜爱 //d1.sina.com.cn/201706/26/14587
百万年薪背后 是人工智能领域泛起的人才泡沫 2017年07月04日 06:30 PingWest 微博微信空间分享添加喜爱 (原标题:百万年薪背后 是人工智能领域不断泛起的人才泡沫) 应采访者要求,戴 ...
- 10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第5天 2018/10.30
10天精读掌握:计算机组成与设计COAD:Patterson and Hennessy 第5天 2018/10.30 1. 第4次周计划概览 2. 今日学习成果 3. 今日时间表 4. 今日反思 今天 ...
- down 网卡端口周期性的up_down 网卡端口周期性的up_端口每隔一段时间就就会不停up/down,是端口硬件故障了吗?......
本帖最后由 xy411381121 于 2018-9-12 15:04 编辑 为什么交换机的端口在短时间内会反复up/down啊?而且今天这段时间是这几个端口,换个时间段又换成其他端口这样反复up/d ...
- 为什么要低温保存_新酒为什么要贮存一段时间才能喝?瓶装白酒这样保存最好!...
点击蓝字关注我们 <消费评论>全国统一刊号:CN42-1894/F 酒丨问丨千丨知 ▽ ▽ 俗话说:白酒三分酿七分藏,白酒的品质三分在于酿造工艺,七分在于后期的储藏,可见储藏对于白酒品质是 ...
- plsql objects 过一段时间就会未连接oracle_记一次生产数据库故障排查--连接管理等待事件...
概述 最近HR数据库比较慢,拿了其中一段时间的awr报告来分析,发现有一个等待事件:connection management call elapsed time,虽然占比不是很大,不过也是有点奇怪, ...
- php 间隔时间执行任务,PHP间隔一段时间执行代码的方法
PHP间隔一段时间执行代码的方法 发布于 2015-11-16 18:26:46 | 230 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...
最新文章
- Matlab 自带机器学习算法汇总
- 成功解决bash syntax error near unexpected token from
- sql union 与多个order by 一起使用
- DM达梦创建表空间用户
- python 计算机基础
- Abp vnext 特征(Features)
- denyhosts、中文文档乱码、端口占用查询
- Statement violates GTID consistency: CREATE TABLE ... SELECT.
- sql azure 语法_将SQL工作负载迁移到Microsoft Azure:服务选择
- h5支付不能打开支付宝 ios_iOS支付宝H5支付无法返回APP解决方案
- 这次刷爆欧美“脸书圈”的是,中国天津
- R 回归 虚拟变量na_R语言 | 回归分析(一)
- 浅析360在系统的进程自保护及突破
- java 自定义控件_自定义控件的开发
- 使用matlab显示图像的一个坑:文件名或 URL 参数必须为字符向量、uigetfile出现要串联的数组的维度不一致
- 海思SD3403/SS928开发(三)红外DC接入
- Android 编译命令 make j8 21 | tee build.log 解释
- 专业系统维护:CleanMyMac X for mac
- 智慧解析第09课:路西法祭品
- jzoj4210. 【五校联考1day1】我才不是萝莉控呢(哈夫曼树)