作者:前端express
链接:zhuanlan.zhihu.com/p/493401483…
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
\
2.JS中的事件模型
bubbles cancelbubble cancellable
anmationName
pagetranstioneventpaste
focus自动聚焦\
三、boom对象和dom对象
boom就是浏览器
dom就是document
1.navigator.userAgent 获取用户设备信息
2.dom对象,对页面的标签进行增删改查操作
*查
document.querySelector(选择器的名称)
document.querySelectorAll(选择器的名称)
*添加
*删除
*改
四、es6
1.块级作用域 { }
2.常量 let
3.声明对象 const
4.箭头函数 =>
5.结构分解(解构)
6.扩展运算符 ...
⑥ setTimeout:
⑦ setInterval:通过变量接受ID,传入clearInterval);
⑧ clearTimeout:清除延迟;
⑨ clearInterval:清除定时器;
在这九种方法中,最常用到也是这里面最麻烦的四种是setTimeout/clearTimeout和setInterval/clearInterval,它们两两对应,常放在一起搭配使用。下面就给大伙举一个这方面的栗子~
(栗子:setTimeout/clearTimeout)
收起
分享
评论
点赞
\
DOM0事件模型
内联模型:直接将函数名作为HTML标签的某个事件属性的属性值;
栗子
缺点:违反了W3C关于HTML与JS分离的基本原则!
脚本模型:在JS脚本中通过事件属性进行绑定;
栗子 window.onload = function(){}
局限性:同一节点只能绑定一个同类型事件;
DOM2事件模型(后面有栗子!)
优点:同一节点,可以添加多个同类型事件的监听器;
①添加事件绑定:
IE10之前:btn1.attachEvent("onclick",函数);
其他浏览器:btn1.addEventListener("click",函数,true/false);
true:表示事件捕获;false(默认):表示事件冒泡
兼容写法:if(btn1.attackEvent){btn1.attachEvent("onclick",函数);}else{btn1.addEventListener("click",函数,true/false);}
②取消事件绑定:
.detachEvent("onclick",函数名);
.removeEventListener("click",函数名);
注:如果取消时间帮顶,回调函数必须使用有名函数,而不能使用匿名函数。因为在取消事件帮顶时,需要传入函数名;
1.JS中的事件分类
鼠标事件
click 单击
dblclick 双击
mouseover 鼠标移入
mouseout 鼠标移出
mousemove 鼠标划过
mousedown 鼠标按下
mouseup 鼠标抬起
键盘事件
keydown:键盘按下时触发
keypress:键盘按下并松开的瞬间触发
keyup:键盘抬起时触发
注意事项
①执行顺序:keydown keypress keyup
②长按时,会循环不断的执行keydown keypress
③有keydown事件,不一定有keyup事件(事件触发过程中,鼠标移走,可能就没有keyup)
④keypress事件只能捕获字母、数字、符号(包括回车和空格),不能捕获功能键;keydown keyup基本可以捕获所有功能键,特殊例外
⑤keypress区分大小写,keydown keyup不区分;
⑥keypress不区分主键盘和小键盘,keydown keyup区分;
如何确定键盘触发按键
⑴ 在触发函数中触发参数e代表按键事件;
⑵ 通过e.keyCode 确认案件Ascii码值,进而确定按键;
⑶ 兼容所有浏览器的写法(一般不必要):
var evn = e||event; //取到按键
var code = evn.keyCode||evn.which||evn.charCode; //取到按键编码
移动端
touch
touchmove touchstart touchend
touches targettouches changetouches
pagex pagey translate
classlist addclass removeclass toogleclass
Object.create(prototype[, descriptors]) : 创建一个新的对象
Object.defineProperties(object, descriptors) : 为指定对象定义扩展多个属性
contains(str) : 判断是否包含指定的字符串 * startsWith(str) : 判断是否以指定字符串开头 * endsWith(str) : 判断是否以指定字符串结尾 * repeat(count) : 重复指定次数
对象扩展 * Object.assign(target, source1, source2..) : 将源对象的属性复制到目标对象上 assign(obj, ...sources) * Object.is(v1, v2) : 判断2个数据是否完全相等 * __proto__属性 : 隐式原型属性\
- 数组扩展 *
Array.from(v) :\ - Array.of(v1, v2, v3) : 将一系列值转换成数组\
- Set()/Set(arr) //arr是一维数组 * add(value) * delete(value) * clear(); * has(value) * size * * Map()/Map(arr) //arr是二维数组 * set(key, value) * delete(key) * clear() * has(key) * size * for--of循环 * 可以遍历任何容器 * 数组 * 对象 * 伪/类对象 * 字符串 * 可迭代的对象收起
分享
评论
点赞
什么是属性和方法(固定格式)
有=(赋值运算符) 就是赋值, 没有就是取值
let obj = { a: 10, b: 20 } console.log(obj.a); // 从obj对象的a上取值, 原地打印10 obj.b = 100; // 有=, 固定把右侧的值赋予给左侧的键, 再打印obj这个对象, b的值是100了
vfor遍历
foreach filter
数组的filter方法使用
let arr = [19, 29, 27, 20, 31, 32, 35]; let newArr = arr.filter((val) => {return val >= 30}) // 数组调用.filter()方法 - 传入一个函数体 (固定格式) // 运行过程: filter会遍历数组里的每一项, 对每一项执行一次函数体(会把每个值传给形参) // 作用: 每次遍历如果val值符合return的条件, 就会被filter收集起来 // 返回值: 当filter遍历结束以后, 返回收集到的符合条件的那些值形成的新数组 console.log(newArr);
localStorage.setItem("key名", 值) - 把值存在浏览器本地叫key的对应位置上
localStorage.getItem("key名") - 把叫key的对应值, 从浏览器本地取出来
==值只能是字符串类型, 如果不是请用JSON.stringify转, 取出后用JSON.parse转==
JSON.parse(JSON字符串) - 把JSON格式化字符串, 再转回成JS数据
reverse/splice/sort $set
window.onload是一个事件,当文档加载完成之后就会触发该事件
async await
请求响应json处理some every findindex find
箭头 includels foreach
解构
展开
join map object.defineproperty
object.create
oobject.keys
object.prototype
new关键词不能用于math
+号拼接
为对象加方法
oobject.values
json.stringify
var abc=[]为数组
join foreach filter
sort
length
tostring
this class constructor
data-
call apply bind
nan属性
反引号$符
arguments
extends
static
setinterval
elem.style.top/left/
cloneNode
\
appendchild
window.scroll(x,y)不加单位
元素结点.firstchild lastchild
attr
parentnode
previoussibling
nextsibling
获取元素属性.属性名
设置元素属性.属性名=新的值
element.value="hello"
nodevalue
interhtml
\
element.classname
getattributenode
getelementbyid