前端基础
2022-05-22 15:38:22 34 举报
AI智能生成
前端学习-思维导图
作者其他创作
大纲/内容
选择器获取元素
获取body/html元素
事件的三大部分
获取元素绑定事件
innerText/innerHTML
隐藏/显示密码
失去焦点
窗口改变触发
Web API
自动垃圾回收
JS的垃圾回收
基本类型String、Number、boolean、undefined、null、symbol、bigint
对象引用类型Object、Function、Array
判断方法typeof:返回一个字符串,表示未经计算的操作数的类型● 可以判断:undefined、数值、字符串、boolean、function● 不能判断:null与Object、Object与arrayinstanceof:判断实例方法,专门判断对象的具体类型用于检测构造函数的prototype属性是否出现在一个实例对象的原型链上。简单点说:如果B函数的显示原型对象在A对象的原型链上,返回true,否则返回false===:比较两个东西的时候,双等会执行类型转换后比较,三等不会类型转换,类型不同直接false
引出问题1. undefined与null区别2. 什么时候给变量赋值为null3. 严格区分变量类型与数据类型4. ><以及charCodeAt()方法
数据结构相关
数据:
内存:
变量:
三者之间的联系:
引出问题1. 赋值与内存问题2. 引用变量赋值问题3. js调用函数传递变量参数,都是值传递!!!4. JS引擎是如何管理内存的
数据、变量、内存的理解
对象
二者的第二个括号都是函数的参数
-
注意:- 立即执行函数后面有语句,需要在其后补充 `;`- 作用域不同
IIFE自调用函数
this指向
函数
字面量
1. 构造函数名字首字母要大写 2. 我们构造函数不需要return 就可以返回结果 3. 我们调用构造函数 必须使用 new 4. 我们只要new Star() 调用函数就创建一个对象 ldh {} 5. 我们的属性和方法前面必须添加 this
构造函数
1. new 构造函数可以在内存中创建了一个空的对象 2. this 就会指向刚才创建的空对象 3. 执行构造函数里面的代码 给这个空对象添加属性和方法 4. 返回这个对象
new
数组创建
正巧参加了2012的Backbone.js conference,现场很多大神也都讨论了这个非常火热的话题。最后大家公认的结论是这样的:1、加与不加是风格问题,风格争议不需要有个定论。2、关键的问题在于如何“争论”,处理好冲突,学会组织语言减少争议是最重要的。3、分号问题在社区内部造成了很多况日持久的口水战,这些口水战是社区的损失……因为大家在这个时候可以写更多的代码带来更多的功能。4、类似的问题还有AMD的module,有的库选择兼容AMD,有的人不愿意。5、公认结论是应该尊重作者的选择,不要因为这些风格问题而fork。module loader应该设法绕过这些问题,提供兼容的解决方案。6、How not to argue about semicolons?Andrew Dupont的Slides在这里,欢迎阅读:http://www.slideshare.net/savethec作者:田乐链接:https://www.zhihu.com/question/20298345/answer/14690437来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
语句分号
基础总结
很重要
原型对象
prototype:显式
显式原型
__proto__:隐式,其中值都是显式原型的值
隐式原型
原型的种类
● 所有函数的__ proto __都是一样的 ● 函数现实原型默认值是一个空 Object 实例对象,(Object除外,它的__proto__属性为null)● 所有函数都是Function函数的实例,包括它自己● Object的原型对象是原型链的尽头,并且为null
常见问题
● 读取对象的属性是:会自动到原型链中查找● 设置对象的属性时,不查原型链,如果当前对象没有该属性,会自动设置该值
属性问题
原型链(隐式原型链)
原型
示例
变量提升与函数提升
1. 全局代码2. 局部代码
代码分类
全局执行上下文
函数执行上下文
执行上下文
示例代码
重要
执行上下文栈
执行上下文和执行上下文栈
● 全局作用域● 函数作用域● ES6新增 块作用域
分类
● 隔离变量● 不同作用域下同盟变量不会冲突
作用
作用域
预解析
代码执行
测试代码
JS运行流程
在函数内部用var声明变量和不用的区别是很大的:- 用var声明的是局部变量,在函数外部访问是访问不到的;- 没var声明的变量是全部变量,在函数外部是可以访问到的。- 其次带var的声明是不可以被删除的(不具有删除属性),不带var的可以被删除。
- 多个上下级关系的作用域形成的链,它的方向时从内到外- 查找变量时就是沿着作用域链来查找的
- 当前作用域下的执行上下文中查找对应的属性,有就返回,否则进入2- 在上一级作用域的执行上下文中找对应的属性,有返回,没有进3- 同第二步,知道全局作用域,如果还是找不到就抛出找不到的异常
变量查找规则
作用域在函数定义时就已经确认了,而不是函数调用
对象变量不能产生局部作用域
相关面试题
作用域链
作用域和作用域链
区别
联系
作用域和执行上下文
定义:返回函数的函数:就是一个函数可以接收另一个函数作为参数,或者是返回一个函数------>map、reduce、filter、sort等
高阶函数
预备知识
闭包
JS本身是单线程的任务
1.先执行执行栈中的同步任务。⒉.遇到异步任务时,(回调函数)将其放入任务队列中。3.一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,于是被读取的异步任务结束等待状态,进入执行栈,开始执行。
判断异步程序是否执行
异步进程处理
情况二
由于主线程不断的重复获得任务、执行任务、再获取任务、再执行,所以这种机制被称为事件循环(event loop)
多线程异步
同步与异步
高级部分
toString():Object对象的方法(顶层全局方法)
call
apply
函数的方法
不是数组,类数组。即使不定义形参,也可以使用arguments来使用实参,其中有个属性`callee` 指向使用此(函数)方法的对象。
浏览器执行JS文件会:读取到一行加载一行
伪数组(隐含的参数)
window经常忽略
这个调用函数可以直接写函数,或者写函数名或者采取字符串‘函数名()'三种形式。第三种不推荐
只是执行一次,等到时间到了执行回调函数
window.setTimeout
需要等待时间,时间到了才去调用这个函数,因此称为回调函数。
回调函数
clearTimeout
clearIntertval
停止定时器
addEventListener
事件监听器
反复调用一个函数
setInterval
定时器
子主题
跳转、重载方法
location
获取用户当前浏览器的信息(设备类型啥的)
navigator
history
JS基础知识(小部分)
拖动模糊动态框
偏移量:offset
可视区:client
滚动系列:scroll
经历自身的盒子会触发,经历子盒子会重复触发
mouseover
只是经历自身的盒子才会触发,经历子盒子不会重复触发
mouseenter
冒泡
PC网页特效
小点点
JavaScirpt
$ (document) .ready ( function () {. /此处是页面DOM加载完成的入口} );1.等着DOM结构渲染完毕即可执行内部代码,不必等到所有外部资源加载完成,jQuery帮我们完成了封装。2.相当于原生js 中的DOMContentLoaded。3.不同于原生js 中的load事件是等页面文档、外部的js文件、css文件、图片加载完毕才执行内部代码。
$ 和 JQuery一样
JQuery
等价于innertext
vue中被:标明的属性,写入属性内容时,单引号内的内容被识别为字符串,如果被两层嵌套的话内部的引号内容识别为字符串。
1.blue不被\"\"包裹就会提示找不到变量 -->2.blue被\"\"包裹就会、(因为本身就定义为了字符串)渲染为字符串3.必须双引号嵌套单引号,或者双引号嵌套单引号,否则配对会错误
数组
绑定样式
变量
注意点
数据变化正常,但是界面展示异常
vue虚拟DOM用于区分不同元素,如果没有区分的话,数据展示会出现异常
唯一
key
可以用splice获取第一个元素,再去修改
this指向vm实例
this.$set
通过将原对象解析为新的对象的方式来展示对象
修改对应数组内容的时候,必须是修改的该数组!!!,否则页面不会变化
你也可以使用 v-for 来遍历一个对象的所有属性。
你也可以提供第二个参数表示属性名 (例如 key):
第三个参数表示位置索引:
v-for 与对象
示例代码的data
外框
v-for
自定义事件
keyup----按键修饰符
内联事件处理器
v-on
常见需求是为了绑定style和class的
:代替
v-bind
基本常见场景
值绑定
表单非空校验
v-mind
vue会跳过对用到这个标签的元素的编译
v-pre
v-once
v-memo 参数是数组
v-cloak
v-slot插槽
常见命令
数组过滤
ES6转ES5:babel编译器
ESLint语法检查
SSO搜索优化
SSR:服务端渲染
对象转为基础类型,再去读取
深:二者不是相同对象,引用地址不相同
深拷贝、浅拷贝
ES6
写法
除非依赖属性发生变化,否则只发生一次变化(初始)
注意事项
计算属性
异步操作
deep深度监视
immediate初次执行监视
属性
监视属性
定义之后使用只需要在所使用的地方加一个管道符右侧写过滤器名字
过滤器
局部
全局
自定义指令
node-sass:非常受控于版本,不一致很容易报错
VUE UI快速创建项目、生成创建模板
用于锁定依赖模块的版本
package-lock.json
编辑器的配置、针对于当前设备的规则
editconfig
$ npm cache clean --force
npm缓存清理
清理npm的缓存
不会经过webpcak的静态资源存放目录
public文件夹
经过webpcak打包的文件夹【主要开发内容】
src
项目构建后的内容
dist
node_moudles项目依赖【不需要开发】
package.json记录安装的模块信息【部分情况下需要开发,记录依赖的版本】
多个组件共有同一变量
vuex
页面跳转
表现形式:url-hash
route
URL中 # 后面的内容是不会发送给服务端的
项目创建后的文件介绍
引入
注册
使用
使用方式
组件
link决定了你要渲染什么组件(页面) 通过route.js
view决定了你要将其渲染到什么位置
以上成对出现
路由
Vue
拓展
计算属性优于侦听器,如果一个操作使用计算属性和侦听器都可以做到的话,那么推荐使用计算属性。
多个属性影响A时,使用计算属性A的改变影响多个属性,使用监视属性
边距塌陷
如果外层div有边框、或者上级有边界、overflow使用超出隐藏
margin塌陷
BFC:内容区域
CSS
前端
0 条评论
下一页