/*
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()