ES6 js高级

  1. 每一个对象都是功能中心,具有明确分工。灵活
  2. 面向对象和面向过程的区别在于一个注重两者过程,一个注重两者本身,同时面向对象本身也夹杂着面向过程。
  3. 面向对象的特性:封装性,继承性,多态性。
  4. 创建类和对象:js中没有Java一样类的概念,通过class关键字来创建类,类名首字母大写,类里面有constructor函数,可以接受传递过来的参数,同时返回给实例对象。创建类后面不要小括号,类里面函数都不要加function
  5. 类添加方法:类里面所有的函数省略function。多个函数之间不需要逗号分隔。
  6. 类的继承:子承父业class Son extends Father{},直接对son进行实例,属性就继承父类。
  7. super关键字可以调用父类中的构造函数super(参数1,参数2),super必须在子类this之前添加,否则报错。
  8. 继承中:先看子类再看父类,就近原则。
  9. 调用父类普通函数:super.函数名()
  10. **使用类和对象注意点:**在es6中没有变量提升,所以new实例化要写在class创建类的后面。 2. 共有属性要在前面加this。如this.name 3. constructor里面的this指向实例对象,类里面方法的this指向该方法的调用者(要想让方法里面的this指向实例对象可以在类外面声明一个全局变量,在constructor里面把this赋值给that)后面的bind可以解决this

构造函数和原型:es6之前没有类的概念所以用构造函数创建不是类。

  1. 构造函数new在执行时会做四件事情;1.在内存中创建一个对象2.this指向这个空对象,3.执行构造函数里面的代码并赋值给这个空对象属性和方法,4. 返回这个新对象。
  2. 静态成员和动态成员:构造函数中属性和方法都可以称为成员,其中this添加的成员为实例成员。只能通过实例对象来调用为动态成员,相反静态成员是构造函数自己添加的成员,只能构造函数访问。
  3. 原型:构造函数虽好,但是浪费内存。原型是构造函数的一个属性,所以可以用构造函数添加一个属性,指向一个对象,我们可以把一些不变得方法,直接定义到prototype****原型对象上,这样所有的对象实例共享这些方法,先设置在调用,别忘记原型指回构造函数名。
  4. 构造函数的方法单独写出来
  5. 对象原型__proto__:为什么实例对象可以访问构造函数的动态成员,因为给每一个实例对象添加了一个__proto__:而这个属性指向构造函数的原型对象。此时存在原型链如果实例对象自身没有方法就去构造函数原型对象查找。
  6. 原型constructor:可以通过constructor找到对象指向哪个构造函数,另外特殊情况下**修改构造函数的原型对象(prototype)**需要手动添加constructor指回原来的构造函数名。要不然实例对象的constructor指向的是OBJ
  7. 原型链:当访问一个实例对象的属性或者方法时,先在自身进行查找如果找不到,就去找他的原型(也就是__proto__,其指向的构造函数prototype原型对象),找不到去OBJ再到OBJ的构造函数,还没有返回null
  8. 原型this指向:在构造函数中this指向对象实例。构造函数原型中this指向对象实例
  9. 利用原型对象扩展内置对象的方法l:可以对数组(Array)对象(Obj)这种的构造函数原型添加一个方法,
  10. 数组和字符串不能像构造函数那样用大括号**进行赋值,只能采用点的方式,否则覆盖
  11. 继承:es6之前没有extends。通过构造函数+原型对象实现继承,称为组合继承。
  12. call():函数.call(当前调用函数this指向,实参1,实参2)可以改变函数里面this的指向(原来函数指向的是window),
  13. es6类的本质:构造函数另一种写法,是es5构造函数的语法糖
  14. 语法糖:就是两种方法最简单的那种叫法
  15. es5新增方法:数组方法:迭代(遍历)forEach(function(value,index,array),)
  16. filter筛选数组filter(function(value,index,array)需要创建一个新数组来保存筛选后的数字
  17. some():用于查找数组中是否有满足条件的元素,返回值为布尔值,有就true。
  18. 字符串方法: trim():去除两端空字符串。
  19. 对象的方法:增加属性Object.defineProperty(要改的对象,要改的属性,{value:改成什么值,writable:false(让哪个属性不能修改)}enumerable:false不允许遍历(object.keys()这个属性名,默认false. configurable:false不能删除和设置属性。
  20. Object.keys是():遍历对象类似于for,in,返回一个属性名组成的数组。
  21. 高级函数:apply()方法:可以改变this指向也可以调用函数和call差不多,区别在于参数必须为数组(伪数组),主要用于和数组相关的计算,如利用数学对象求最大值,Math.max.apply(Math,数组)
  22. bind()方法:不会调用原来函数需要定义一个变量自己调用,但是也会改变this指向,返回的是原函数改变this之后产生的新函数。定时器的函数指向window,多用于按钮定时。
  23. 三者应用场景:call主要用于继承,apply主要用于数组有关,bind主要用于定时器
  24. 严格模式:ie10以上
  25. 高阶函数:参数为函数,或者return返回一个函数
  26. 闭包:一个函数可以访问另一个函数的局部变量,那么另一个函数称为闭包。作用:延伸了变量的作用范围,不会立即销毁。且不仅限自身使用。别人也可以用。其中立即执行函数也是一个小闭包
  27. 递归函数:函数内部调用自己,n*f(n-1)。 斐波那契:n1=1,n2=1。n3=n1+n2,n1=n2,n2=n3.,递归函数主要1.找到规律,2.找到出口函数。如 斐波那契:n1=1,n2=1。
  28. 浅拷贝:只能复制一层,第二层或者多层只能拷贝地址。其中一个更改另一个也随之改动
  29. 正则表达式:也是对象,表单验证,test方法用于检测,里面不需要加‘’。边界符限制(^开始 结 尾 ) 。 / a b c 结尾)。/^abc /abc/,只能 是abc这三个,中括号里面的^则为取反。
  30. 正则量词符:{3}重复3次 {3,}大于等于3次 {3,5}大于等于3次小于等于5次 ?一次或者0次 +大于等于1次
  31. 严格模式:‘’use strict‘’1.必须用var 声明,2.禁止自定义函数中的this指向window(也就是必须new一下)。3.创建evel作用域 。4.对象不能有重复的属性
  32. JOSN对象:JOSN.stringify(obj/arr)通过这个方法吧原生对象/数组转换为JOSN对象(obj—string)
  33. JSON.parse(json) 把json对象(数组)转换为原生js对象/数组。
  34. 回调函数不是我们调用系统调用,又叫钩子函数
  35. let关键字定义代替var。特点1.块级作用域有效,2.不能重复定义变量,3.不会变量提升(预解析)****应 1.循环遍历加监听
  36. const关键字:特点 1.常量不能修改 2.其他同let
  37. 变量解构赋值:理解:从对象或者数组中提取数据并且赋值给多个变量
```javascript
 `// 解构赋值
let obj={name:'ni',age:18};
// let name =obj.name;
// let age=obj.age;
// 相当于少写了两次变量
let{name,age}=obj;
console.log(name,age)

// 结构数组
let arr=[1,2,3];
let[,a]=arr;
console.log(a);`

 1.模板字符串:简化字符串的拼接,以前用引引++,现在用单引号加¥{}拼接。如‘名字¥{obj.name},我今年年龄${obj.age}’.。应对url
 

 1. 简写对象,属性值和变量名相同可以省略不写,对象里面的方法,:function可以省略
 2. 箭头函数
 3. 形参默认值,直接给形参赋值
 4. 原型链本质上隐式原型链

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值