乐趣区

函数中的this 箭头函数相关知识

函数中 this –> 普通函数中 this 不是看它定义时候所处的对象 谁调用它 this 就是谁

普通函数中 this 是什么?

任何函数本质上都是通过某个对象来调用的, 如果没有直接指定就是 window
所有函数内部都有一个变量 this
它的值是调用函数的当前对象

如何确定 this 的值?

test(): window
p.test(): p
new test(): 新创建的对象(准确说不是 p 但 p 最后是指向这个对象的) var p = new test()
p.call(obj): obj

//
情况 1:如果一个函数中有 this,但是它没有被上一级的对象所调用,那么 this 指向的就是 window,
这里需要说明的是在 js 的严格版中 this 指向的不是 window,但是我们这里不探讨严格版的问题,你想了解可以自行上网查找。

情况 2:如果一个函数中有 this,这个函数有被上一级的对象所调用,那么 this 指向的就是上一级的对象。
情况 3:如果一个函数中有 this,这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this 指向的也只是它上一级的对象
var o = {
a:10,
b:{
// a:12,
fn:function(){
console.log(this.a); //undefined
}
}
}o.b.fn(); 尽管对象 b 中没有属性 a,这个 this 指向的也是对象 b,因为 this 只会指向它的上一级对象,不管这个对象中有没有 this 要的东西。
//var o = {
a:10,
b:{
a:12,
fn:function(){
console.log(this.a); //undefined
console.log(this); //window
}
}
}var j = o.b.fn;j();
**this 永远指向的是最后调用它的对象,也就是看它执行的时候是谁调用的,例子中虽然函数 fn 是被对象 b 所引用,但是在将 fn 赋值给变量 j 的时候并没有执行所以最终指向的是 window**
箭头函数的特点:
1、简洁
2、箭头函数没有自己的 this,箭头函数的 this 不是调用的时候决定的,而是在定义的时候处在的对象就是它的 this
3、扩展理解:箭头函数的 this 看外层的是否有函数,
如果有,外层函数的 this 就是内部箭头函数的 this,(如果它的外层也是箭头函数,则继续向外找)
如果没有,则 this 是 window。

作用: 定义匿名函数
基本语法:
没有参数: () => console.log(‘xxxx’)
一个参数: i => i+2
大于一个参数: (i,j) => i+j
函数体不用大括号: 默认返回结果
函数体如果有多个语句, 需要用 {} 包围,若有需要返回的内容,需要手动返回
使用场景: 多用来定义回调函数

退出移动版