js查漏补缺
# js笔记
# js继承有多少种方式
- 原型链继承
- 构造函数继承
- 组合继承
- 原型式继承
- 寄生式继承
- 寄生组合式继承
- extends关键字继承
# ES6的extends关键字是用哪种继承方式实现的呢?
# call apply bind原理
- fun.call(thisArg,param1,parma2,...) 立即执行
- fun.apply(thisArg,[param1,parma2]) 立即执行
- fun.bind(thisArg,param1,parma2,...) 调用的时候才去执行
let a = { name:'孙悟空', setFun:function(msg){ return msg + this.name } } let b = { name:'猪八戒' } console.log(a.setFun('hi~')); console.log(a.setFun.call(b,'hi~')); console.log(a.setFun.apply(b,['hi~'])); let str = a.setFun.bind(b,'hi~') console.log(str());
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 闭包
闭包让开发者可以从内部函数访问外部函数的作用域
function makeFunc() { var name = "Mozilla"; function displayName() { alert(name); } return displayName; } var myFunc = makeFunc(); console.log(myFunc());
1
2
3
4
5
6
7
8
9
10
# 数组
# 数组的构造器有那些
Array的构造器用于创建一个新的数组,通常推荐使用字面量的方式来创建
let arr = [] // 使用Array构造器,可以自定义长度 let arr = Array(6) // 长度为6的空数组 empty表示什么都没有 undefined表示未定义 null表示空指针
1
2
3
# 新增构造方法
- Array.of 会将传入的数据依次按顺序创建到数组当中
let obj = { name: '孙悟空', age: 20 } let arr = Array.of(1,2,3,4,0,obj) console.log(arr);
1
2
3
- Array.from 可以将类似数组的对象转换为真正的数组
``Array.from()
方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)
实际应用中,常见的类似数组的对象是 DOM 操作返回的 NodeList 集合,以及函数内部的
arguments
对象。Array.from()
都可以将它们转为真正的数组。let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3 }; // ES5 的写法 var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c'] // ES6 的写法 let arr2 = Array.from(arrayLike); // ['a', 'b', 'c']
1
2
3
4
5
6
7
8
9
10
11
12
# 哪些是改变自身的方法
pop push reverse sort shift unshift splice copyWithin fill
# 哪些是不改变自身的方法
includes indexOf lastIndexOf toString concat join slice toLocateString
# 遍历的方法有哪些
forEach every scome map filter reduce reduceRight entries find findIndex keys values
reduce reduceRight entries
1
2
3
# 数组的判断
- Array.isArray(arr)
编辑 (opens new window)
上次更新: 2023/06/26, 13:51:54