阻止事件冒泡
- 首先在函数里面需要添加事件对象e
- e.stopPropagation() --阻止冒泡事件
- e.preventDefault() --阻止链接的跳转,表单域跳转
事件解绑
- leve0 情况 :btn.onclick()=null
- leve2 情况 :btn.removeEvenListener('事件名',函数名)
不用mouseover的原因:此事件有冒泡效果,mouseenter没有冒泡效果
事件委托
将事件绑定在父级上,点击子级会冒泡到父级执行时间
if(e.target.tarName==="大写开头标签元素"){
e.target.style=---
}
scroll滚动
- scrollTop和scrollLeft这两个值是可读写的
- scrollTo()可以把内容滚动到指定的坐标
- 元素.scrollTo(x,y)
获取html标签
document.documentElement
获取页面尺寸
获取页面位置
注意
可以使用getBoundingClientRect()函数计算div盒子离html的边距,且不受父级盒子的影响。
时间戳
- getTime()
- +new Date() --常用
- Date.new() --只能返回当前时间的时间戳
查找兄弟节点
增加节点
-
克隆节点
移动端触屏事件
location 对象
- location的数据类型是对象,它拆分并保存了URL地址的各个组成部分
- 可以利用js形式跳转页面:location.hef="http://---"
navigator 对象
- 该对象记录了浏览器自身的相关信息
- 通过userAgent检测浏览器的版本及平台
histroy 对象
存储
- localstorage只能存储简单数据类型
- 复杂数据类型用JSON.stringify()进行转换,他会将对象转换为字符串,利用JSON.parse()转换为对象
- 用上面方法转换后,取出来需要用JSON.pase进行转换为对象
函数变量提升
js中函数也有变量提升,只提升函数声明,不提升函数赋值(函数表达式)
构造函数
内置构造函数
- object
- 实例对象没有静态方法,如Object.keys,Object.values,Object.assign,构造函数才有
- Array
- Array.from() 伪数组转换为真数组
reduce(function(prev,current)=>{},初始值(若从对象里面取值累加需设置为0))
String
- subString
增加一点:关于this
- 在构造函数中,this指向构造的实例对象,若有多个实例对象,则指向最后一个
- 原型对象里面的this指向的还是引用他的实例对象
constructor属性
- 每个原型对象里面都有个constructor属性(constructor构造函数)
- 作用:该属性指向该原型对象的构造函数(原型对象是向里寻找的,构造函数是爸爸)
- 实例对象的原型对象是它的构造函数
- 如下图非常重要
- 注意:Dog.prototype.constructor = Dog;
拷贝
浅拷贝是拷贝对象,但如果浅拷贝的内容里面包含了引用数据类型则会拷贝地址
深拷贝
静态函数
- es6中写在class类下面,constructor前面
static dff(){
return '哈哈哈 不错'
}
static ccd(){
p.innerHTML=this.dff()-----静态函数中this始终指向类,由类调用
}
setter和getter
setter和getter是一对,属性名一样,实例调用时后面不加括号()
set extre(value){
this.value=value //this指向构造的示例函数
p.innerHTML+=this.value
}
get extre(){
return `${this.value}`
}
图片懒加载
宏任务与微任务
首先会执行以<script>打头的里面的函数程序宏任务
创建对象
- 字面量创建
- class类创建
防抖
- 防抖要闭包,变量往外跑
- debounce只会创建一次,所以timer也只会创建一次,共享了变量
- setTimeout是立即赋值给timer的
- 在闭包的回调中,setTimeout 的回调函数的调用方式脱离了原始上下文,func函数的this指向会被改变指向window,所以需要绑定
- js中函数即使没有形参,实际调用也可能传参数,需添加形参
节流
symbol
String.fromCharCode()
- 参数:一个或多个数字(表示字符的 Unicode 编码)
- 返回值:由这些编码组成的字符串
//限制范围:0 ~ 65535(0x0000 ~ 0xFFFF)
console.log(String.fromCharCode(72, 101, 108, 108, 111));
// 输出: "Hello"
console.log(String.fromCharCode(9731));
// 输出: "☃"(雪人符号)
charCodeAt()
const str = 'A';
console.log(str.charCodeAt(0)); // 65
console.log(String.fromCharCode(65)); // 'A'
注:String.fromCodePoint()
原因:128512(即 😀 的编码)超出了 0xFFFF
//正确使用
console.log(String.fromCodePoint(128512)); // 😀