箭头函数

发布时间 2023-05-06 11:10:15作者: 爱前端的小魏
/*
this指向
1.通过对象调用函数,this指向对象
2.直接调用函数,this指向全局
3.通过new调用函数,this指向新创建对象
4.通过call,apply,bind调用函数,this指向指定数据
5.dom事件函数,this指向事件源

箭头函数用法
   关于函数表达式,任何函数表达式都可以用箭头函数表示

   如果参数只有一条,可以忽略省略号

   如果只有一个表达式,可以不写return和大括号

   要是不加小括号,那么就是表达式,是不支持这种写法的,所以需要加小括号

   注意细节:
   箭头函数其实是没有this的,所以箭头函数的this都是指向的外面的(普通函数是有this)
   箭头函数中没有this,arguments,new。.arget,如果使用,都是使用外面的
   箭头函数没有原型,不能用于构造函数

   应用场景:
   1.临时使用的函数,并不会调用他:
      1.事件处理函数;2.异步处理函数;3.其他临时性函数
    2.绑定外层this
    3.保持代码干净
 */

//如果参数只有一条,可以忽略省略号
// const obj1 = a=>{
//     console.log('值:',a)
// }
// obj1(1)

//如果只有一个表达式,可以不写return和大括号
// const obj2 = (a,b)=>a+b
// console.log(obj2(1,2))

//要是不加小括号,那么就是表达式,是不支持这种写法的,所以需要加小括号
// const sum = (a,b)=>({
//     a:a,
//     b:b,
// })
//或者加上return{}
// const sum1 = (a,b)=>{
//     return{
//         a:a,
//         b:b,
//     }
// }

// const func = ()=>{
//     console.log(this)
// }
// const obj = {
//     method : function(){
//         const func = ()=>{
//             console.log(this)
//             console.log(arguments)
//         }
//         func()
//     }
// }
// obj.method(234)

// const numbers = [1,2,3,4,5,6]
// const relute = numbers.filter(num => num % 2 == 0).map(num => num *2)//[2, 4, 6, 8, 10, 12]
// console.log(relute)//[4, 8, 12]

const obj = {
    count : 0,
    print: ()=>{
        console.log(this)//指向window
        console.log(this.count)//指向window(不处理这种情况)
    }
}
//obj.print()
const print = obj.print;
print()