箭头函数、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
作用:定义类型,功能类似构造函数
成员:
- 构造器constructor,用于初始化成员
- 方法
关键字:
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()
递归
递归函数就是自己直接或间接调用自身,必须要有结束条件不然成为死递归
递归两要素:
- 结束条件
- 递推关系
优点:代码简洁、清晰、易懂
化归思想
化归思想: 将一个问题由难化易,由繁化简,由复杂化简单的过程称为化归,它是转化和归结的简称。