一.箭头函数的使用
***1.箭头函数提供了一种更加简洁的函数书写方式。基本语法是:
参数 => 函数体
基本用法:
var f = v => v;
//等价于
var f = function(a){
return a;
}
f(1); //1
注意:
1.当箭头函数没有参数或者有多个参数,要用 () 括起来。
2. 当箭头函数函数体有多行语句,用 {} 包裹起来,表示代码块,当只有一行语句,并且需要返回结果时,可以省略 {} , 结果会自动返回。
3.当箭头函数要返回对象的时候,为了区分于代码块,要用 () 将对象包裹起来
4.注意点:没有 this、super、arguments 和 new.target 绑定。
5. 箭头函数体中的 this 对象,是定义函数时的对象,而不是使用函数时的对象。
4.示例`
var func = () => {
// 箭头函数里面没有 this 对象,
// 此时的 this 是外层的 this 对象,即 Window
console.log(this)
}
func(55) // Window
var func = () => {
console.log(arguments)
}
func(55);
二.箭头函数的特性
1. 不绑定arguments,用rest参数…解决
2.本身没有this的概念,捕获其所在上下文的 this 值,作为自己的 this 3.值,this指向全局
3.箭头函数不能使用new(会报错)
4.箭头函数没有原型属性(prototype)
5.箭头函数不能当做Generator函数,不能使用yield关键字
6.箭头函数不能换行
7.箭头函数有constructor、length属性
8.箭头函数可以立即执行
三.call,applay bind 的区别.
1.applay、call、bind他们三个都能改变函数this的指向问题;
2.applay、call这两个方法的主动调用,bind返回的是改变this指向后的新函数;
3.传参的问题区别,call和bind都是直接传递参数,applay传递的是数组
示例
var name = '小王',age = 17;
var obj = {
name:'宿舍',
obj2:{
name:"昂啊",
age:99
},
objAge:this.age,
myFun:function(...a){
// let a = [...arguments];
console.log(`${this.name}--年龄--${this.age}---${a}`);
},
}
let obj1 = {
name:"丧失",
age:3
}
// 如何实现call的原理
// call(指向的对象,传入的值1,2...)
Function.prototype.callFun = function(content,...a){
if(!content||content==null||content==undefined){
content = window;
}
let fn = Symbol();
content[fn] = this;
return content[fn](...a);
}
// obj.myFun.call()
obj.myFun.callFun(obj1,"马上下课","吃饭了");