js高级知识点

JS高级
ES6中定义类跟继承
知道类跟实例对象的区别
类 是一个泛指
实例对象 指的就是具体的实物
如何去声明一个类
class Person{
constructor(){
// 构造函数
this.name = ‘zs’
}
play(){

}

}
使用
var person = new Person()
person.name;
person.play()
如何去实现继承
extends 继承
super
class Child extends Father{
constructor(){
super()
}
}
继承的好处: 孩子可以去享有父亲的属性和方法
面向对象思想编程
面向过程和面向对象有什么区别
面向过程,进行功能的实现,效率高
面向对象,一上来分析对象,先把对象创建好,一个对象对应一个功能模块,然后开始实现里面的逻辑,效率低, 但是容易维护
面向对象思想编程
继承性
封装性
多态性(抽象)
原型和原型链
原型对象
系统会默认给每一个构造函数都去绑定一个Object对象,而这个对象我们称之为原型对象
构造、原型、实例三者关系
构造函数.prototype 获取到原型对象
原型对象.constructor 获取对应构造函数
实例对象.proto 获取对应的原型对象
原型链
属性和方法的查找机制
先从自身去找,如果自身有,直接使用
如果自身没有,找对应的原型对象,如果有,直接使用
如果原型对象还没有,找原型对象的原型对象,如果有,直接使用,如果没有,以此类推,往上去找
直到找到基类 Object的原型对象,如果还没有,找到尽头 null,是属性返回undefined 是方法 就报错
ES5中的继承
利用组合继承
借调构造函数
是为了 属性共享
在函数的构造函数里面调用 call方法 改变父亲构造里面的this指向
原型继承
是为了 方法共享
把父亲的实例化对象赋值给孩子的原型对象; 需要给这个实例化对象设置 constructor的属性,属性的值指向的是当前孩子的构造
函数的进阶
函数的声明方式
命名函数
function fn(){}
匿名函数
var fn = function(){}
new Function
var fn = new Function()
函数是一种数据类型
是一个对象,一个复杂数据类型
函数可以通过参数来传递(回调函数),也可以通过值返回
函数的调用
普通调用
this 指向 window
方法调用
this 指向 当前调用函数的对象
构造函数
this 指向 实例对象
事件
this 指向的 该元素
定时器
this 指向的是 window
自调用函数
一定要加 ; 号
严格模式
什么是严格模式 strict mode
约束程序员进行标准编码
如何开启
在js文件或者是函数的第一行写上 ‘use strict’
闭包
什么情况下发生闭包
一个作用域访问了另外一个作用域的局部变量,声明这个变量的地方就叫做闭包函数
两个特性
延伸了变量的作用范围
增强了局部变量的生命周期
缺陷
会造成内存泄漏 内存泄漏到了一定的值之后,就会发生 内存溢出
递归
递归
自己调用自己,递归的函数必须要有出口(判断条件) return
正则表达式
使用正则表达式
正则表达式
校验
test.()
替换
replace
提取
获取正则对象
1. var reg = new RegExp(正则表达式, 模式) g 全局匹配;i 忽略大小写
2. var reg = /正则表达式/模式
校验是否匹配
var result = reg.test(需要校验的字符串) result 返回值是bol类型
正则元字符
边界符
^ 代表是开头 匹配 写在行首
$ 代表是结尾 匹配 写在行尾
括号
() 提高优先级
[] 代表是 多选一,匹配中括号里面任意一个字符就是ok的
[0-9] 代表匹配的是 0 ~ 9 的数字
[^] 代表是取反
{} 代表的是 控制前一个字符出现的次数
{n} 代表前一个字符出现的次数必须要是 n次
{n,} 代表前一个字符出现的次数要 >= n次
{n,m} 代表前一个字符出现的次数要 >=n 次 <= m次
量词符
* 代表前一个字符出现 0次 1次 或者是多次
+ 代表前一个字符串出现 1次 或者是 多次
? 代表前一个字符出现 1次 或者是 0次
预定义类
/d 获取数字
/D 非数字
/w 数字 字母 下划线
/W 非数字 字母 下划线
/s 空格 换行
/S 非空格
替换
实际上用的是字符串里面 replace 方法
str.replace(/正则表达式/g,‘替换的字符串’)
ES6新增语法
关键字
let
暂时性死区
let关键字声明的变量绑定了当前作用域,如果外界还有相同名字的变量,我们只会去使用当前作用域的变量
是可以随意更改值得
const
是一个常量
在声明的时候需要给定值
不能去修改 这个变量的值
解构赋值
数组的解构赋值
let [a,b,c] = [1,2,3]
对象的解构赋值
let {age} = {name: ‘’,age: 19,sex:’’}
可以去取别名的 let {age: myAge} = person
箭头函数
语法
() => {}
箭头函数有简易的写法
如果只有一个参数,可以省略掉小括号
const fn = value => {}
如果函数体里面只有一行代码,可以省略大括号和 return
const fn = value => value+1
this的问题
箭头函数中没有this的绑定,那么箭头函数中的this指向谁呢?
箭头函数所定义的作用域
剩余参数
什么时候用?
不确定传递实参的个数的时候去用
const fn = (…arg) => {}
拓展运算符
语法: …
应用场景
合并数组
var newArr = […arr1,…arr2]
集合转成数组
var arr = […集合对象]
拷贝数组和对象
var arr = [1,2,3]
var newArr = […arr]
var person ={}
var newPerson = {…person}
Array方法
Array.from() 把伪数组转成数组
Array.find((value) => {}) 查询数组里面第一个符合要求的元素,并且把这个元素返回
Array.findIndex((value) => {}) 查询数组里面第一个符合要求的元素,返回这个元素对应的索引值
Array.includes() 判断数组中是否包含这个元素,如果包含返回true
String方法
模板字符串
用反引号引起来的就是模板字符串
``
好处
允许换行,这样我们在拼接html的结构的时候是很容易方便程序去观察结构的
可以直接去使用变量或者是函数的调用
<div>${变量名}</div>
<div>${函数名()}</div>
str.startWith(判断的字符串)
判断字符串是否以某个开头
str.endWith(判断的字符串)
判断字符串是否以某个结尾
str.repeat()
让字符串重复多少次
set方法
set是一个新的数组解构,它是一个集合
里面的元素具备唯一性
创建set对象
let set = new Set()
如何获取set长度
set.size
如何添加set元素
set.add()
如何去删除set元素
set.delete()
如何去判断是否有这个元素
set.has()
如何清空
set.clear()在这里插入代码片

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值