继承
一
通过原型链继承,基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法
确认原型和实例之间的关系是否出现过构造函数 1.child instanceof Object 2.Object.prototype.isPrototypeOf(child)
问题:包含引用类型值的原型属性会被所有实例共享
二
借用构造函数继承 在子类型构造函数的内部调用超类型构造函数 call(),apply()
问题:函数无法复用
三
组合继承(原型链和借用构造函数) 使用原型链实现对原型属性和方法的继承,借用构造函数来实现对实例属性的继承
var let const
提升:
变量还没被声明却可以使用这个还未被声明的变量。 函数的提升优先级高于变量提升。 var声明的变量会被提升到作用域顶部,在全局作用域下声明变量会导致变量挂载在window上
let 和 const不存在提升 let和const区别在于 const不能再次赋值
模块化
模块化的好处: 1.解决命名冲突 2.提供复用性 3.提高代码可维护性
map filter reduce
map
map生成一个新数组,遍历原数组,将每个元素拿出来做变换然后放入到新数组.map 的回调函数接受三个参数,分别是当前索引元素,索引,原数组 [1,2,3].map(v => v+1) //[2,3,4]
filter
filter 的作?也是?成?个新数组,在遍历数组的时候将返回值为 true 的元素放?新数组.删除不需要的元素 let array = [1, 2, 4, 6] let newArray = array.filter(item => item !== 6) console.log(newArray) // [1, 2, 4]
reduce
reduce 可以将数组中的元素通过回调函数最终转换为?个值。 reduce 接受两个参数,分别是回调函数和初始值。回调函数接受四个参数,分别为累计值、当前元素、当前索引、原数组 const arr = [1, 2, 3] const sum = arr.reduce((acc, current) => acc + current, 0) console.log(sum) //sum = 6