箭头函数、es的class、递归思想

317 阅读1分钟

箭头函数、es的class、递归思想

箭头函数

语法

//let test = (参数列表)=> {函数体}
let test = (a,b) => {
return a+b
}

只有一个参数时可以省略()

//let test = 参数 => {函数体}
let test = a => {
return a+10
}

函数体只有一句执行语句并有返回值可以省略{}

//let test = (参数列表) => 执行语句
let test = (a,b) =>  a+b

特性

  • 箭头函数自己没有this
  • 箭头函数this指向是确定的
  • 箭头函数的this指向,是创建这个箭头函数所在对象的上下文
let obj = {
            name: 'jack',
            say: () => {
                console.log(this) // window
            }
        }
 obj.say()
​
let obj = {
    name: 'jack',
    say: function () {
        return () => {
            console.log(this) // obj
        }
    }
}

es6的class

作用:定义类型,功能类似构造函数

成员:

  1. 构造器constructor,用于初始化成员
  2. 方法

关键字:

class类名、extends继承、constructor构造器、super覆盖父类

注:super方法必须在子类使用this赋值时使用

格式:

class  Person{ //类名(大写开头)
  constructor(name, age) { //构造器,并为成员赋值
    this.name = name;
    this.age = age;
  }
​
  sayHi() {//行为方法
    console.log("hello, 我是" + this.name);
  };
}
//用new创建对象与构造函数相似
var p = new Person("lw", 36);
p.sayHi();

extends继承

class Person {
         constructor(name, age) {
            this.name = name
             this.age = age
           }
           say() {
               console.log('chinse', 73, this.name);
           }
        }
        //Studens 可通过继承得到 say()方法
        class Studens extends Person {
            constructor(name, age, sex) {
                // 在子类中,必须在constructor函数中,首先调用super()
                super(name, age)
                this.sex = sex
            }
        }
​
        let stu = new Studens('小红', 18, '女')
        stu.say()

递归

递归函数就是自己直接或间接调用自身,必须要有结束条件不然成为死递归

递归两要素:

  1. 结束条件
  2. 递推关系

优点:代码简洁、清晰、易懂

化归思想

化归思想: 将一个问题由难化易,由繁化简,由复杂化简单的过程称为化归,它是转化和归结的简称。

递归流程

递归.png