JS
这里是蒋丞选手
这个作者很懒,什么都没留下…
展开
-
const 和 let 声明的变量不在 window
在写笔试题时,遇到这样一个题目:给出代码,返回函数值。var cc=3;function dd(){}let aa = 1;const bb = 2;console.log(window.cc); // 3console.log(window.dd); // dd(){}console.log(window.aa); // undefinedconsole.log(window.bb); // undefined结果是undefined 1 2 undefined..原创 2020-07-27 16:25:53 · 918 阅读 · 0 评论 -
模拟new
new操作符做了这些事:它创建了一个全新的对象 它会被执行[[Prototype]](也就是__proto__)链接 (设置对象的__proto__属性为构造函数的原型:调用原型方法) 它使this指向新创建的对象 (使用apply,将构造函数中的this指向新对象:调用构造函数上的属性) 通过new创建的每个对象将最终...原创 2020-04-22 23:13:23 · 118 阅读 · 0 评论 -
在JS中常用的三种绑定事件方法
在JavaScript的学习中,我们经常会遇到JavaScript的事件机制,例如,事件绑定、事件监听、事件委托(事件代理)等。这些名词是什么意思呢,有什么作用呢?事件绑定要想让 JavaScript 对用户的操作作出响应,首先要对 DOM 元素绑定事件处理函数。所谓事件处理函数,就是处理用户操作的函数,不同的操作对应不同的名称。在JavaScript中,有三种常用的绑定事件的方法:...转载 2020-03-17 17:21:41 · 694 阅读 · 0 评论 -
arguments 对象特性
一、argumens伪数组1.arguments对象是函数的内置属性,本身是一个伪数组 JavaScript中,arguments对象是比较特别的一个对象,实际上是当前函数的一个内置属性,(与this一样,都是内置属性)。也就是说所有函数都内置了一个arguments对象,arguments对象中存储了传递的所有实参。arguments是一个伪数组,因此可以进行遍历,并且有length属...原创 2020-03-13 20:08:18 · 594 阅读 · 0 评论 -
浅谈 defer 和 async 的区别
当浏览器碰到script脚本的时候: <script src="script.js"></script> 没有defer或async,浏览器会立即加载并执行指定的脚本,也就是说不等待后续载入的文档元素,读到就加载并执行。 <script async src="script.js"></script> 有async,...转载 2020-03-12 10:43:57 · 768 阅读 · 1 评论 -
浏览器的事件循环(Event Loop)
在了解事件循环前,先介绍几个概念JS单线程JS引擎线程,负责处理javascript脚本程序(V8引擎),解析javascript脚本,运行代码。每次只能执行一段代码,其他任务都得按照顺序排队等待被执行,只有当前的代码执行完成之后才会往下执行下一段代码。JS线程包含在浏览器渲染进程中。浏览器是事件驱动的(Event driven),浏览器中很多行为是异步(Asynchronize...原创 2020-03-09 13:49:29 · 550 阅读 · 0 评论 -
call /apply
apply() / call() 概念在特定的作用域中调用函数,实际上等于设置函数体内this对象的值 ---《js高级程序设计》直白来讲,就是调用一个对象的一个方法,用另一个对象替换当前对象。例如:B.apply(A, arguments);即A对象应用B对象的方法。这两个方法的作用相同,区别在于传入的第二个参数不同apply方法接收两个参数:一个是在其中运行函数的作...原创 2020-02-12 20:38:35 · 84 阅读 · 0 评论 -
onload事件---addLoadEvent函数
onload事件会在页面或图像加载完毕后立即执行;支持该事件的JS对象有image, layer, window当我们想要在页面加载完毕时执行某些函数:window.onload = myfunction(); // 将函数绑定到事件上加载一个事件可以这样写,加载两个事件呢?window.onload = firstFunction;window.onload ...原创 2020-02-12 17:30:50 · 366 阅读 · 0 评论 -
图片预加载和懒加载
概念懒加载:(延迟加载)延迟或满足某些条件时加载照片(只显示当前所能看到的页面的内容)。它与预加载相反, 其作用是对服务器端的性能优化, 减少请求数或延迟请求数, 从而达到缓解服务器端压力的效果。预加载:将图片预先加载到浏览器的本地缓存中, 当需要时直接从本地加载图片到页面中;还可以预先判断图片是否加载成功,如果加载不成功,可以使用本地图片替换;如此一来就很好的提高了用户的体验。但缺点是增...原创 2020-02-12 14:49:45 · 352 阅读 · 0 评论 -
JS防抖和节流
一、防抖&节流 在前端开发中有一部分用户行为会频繁的触发事件执行,而对于DOM的操作、资源加载等耗费性能的处理,很可能会导致界面卡顿,甚至浏览器奔溃。函数的节流与防抖就是为了解决类似需求而产生的。1)节流概念:函数的节流就是预定一个函数只有在大于等于执行周期时才会执行,周期内调用不会执行。好像一滴水只有积攒到一定重量才会落下一样。场景:窗口调整(resize)、页面滚动(...原创 2020-02-11 21:29:43 · 211 阅读 · 0 评论 -
【读书笔记】JS高级程序设计20章--JSON
本章内容:理解JSON语法 解析JSON 序列化JSONJSON是一种数据格式,不是一种编程语言;JSON不属于JS,并不只是JS才使用JSON一、语法JSON的语法可以表示三种类型值简单值:在JSON中表示字符串,数组,布尔值,null;但不支持undefined 对象:对象作为一种复杂数据类型,表示的是一组无序的键值对。每个键值对中的值可以是简单值,也可以是复...原创 2020-03-08 14:02:45 · 94 阅读 · 0 评论 -
【读书笔记】JS高级程序设计7章--函数表达式+闭包+this
定义函数表达式的方式有两种:函数声明,函数表达式两者之间的区别是:函数声明有一个重要的特性函数声明提升在执行代码之前会先读取函数声明。意味着可以把函数声明放在调用它的语句后面。1.1 递归递归函数是在一个函数通过名字调用自身的情况下构成的arguments.callee 是一个指向正在执行的函数的指针,可以用它来实现对函数的递归调用( 非严格模式下可以使用)1...原创 2020-03-07 11:57:26 · 125 阅读 · 0 评论 -
【读书笔记】JS高级程序设计4章--作用域+垃圾收集
一、执行环境及作用域概念:执行环境定义了变量或函数有权访问的其他数据,决定了它们各自的行为。每个执行环境都有一个 与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中。每个函数都有自己的执行环境。当执行流进入一个函数时,函数的环境就会被推入一个环境栈中。 而在函数执行之后,栈将其环境弹出,把控制权返回给之前的执行环境。当代码在一个环境中执行时,会创建变量对...原创 2020-03-07 10:40:20 · 147 阅读 · 0 评论 -
JS类的继承
首先回顾一下构造函数、原型和实例的关系:每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数的指针,实例都包含一个指向原型对象的内部指针在JS中,实现继承主要是依靠原型链来实现;基本思想是:利用原型让一个引用类型继承另一个引用类型的属性和方法。一、原型链1.1 概念假设让原型对象等于另一个类型的实例,此时的原型对象将包含一个指向另一个原型的指针,相应地,...原创 2020-02-08 17:57:05 · 241 阅读 · 0 评论 -
JS类的创建
一、工厂模式抽象了创建具体对象的过程(用函数封装,用特定接口创建对象的细节)优点:解决了创建多个相似对象的问题缺点:无法识别生成的实例类型function createPerson(name, age, job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.say...原创 2020-02-08 10:20:42 · 139 阅读 · 0 评论