发表于: 2020-06-30 20:28:55

1 2050


今天完成的事情:

1.回顾任务


明天计划的事情:

1.回顾任务


遇到的问题和收获:


小课堂内容:


this关键字


解析器在调用函数每次都会向函数内部传递进一个隐含的参数,就是this

this是JavaScript语言的一个关键字。它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。this的指向在函数定义的时候是确定不了的,只有在函数执行的时候才能确定, 因为this是执行上下文环境的一部分,而执行上下文需要在代码执行之前确定,而不是定义的时候。

随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是“this指的是调用函数的那个对象"。


这里的this并没有明确指明调用的对象,因此指向window全局对象,严格模式会比较特殊,输出的值会变为undefined

function a() {
function b() {
console.log(this) //window
       function c() {
"use strict"
           console.log(this) //undefined
       }
c()
}
b()
}
a()



对象方法被调用时,发生隐式绑定,this指向调用该方法的对象

虽然是在全局对象内调用body的a方法,但这里还是会用隐式绑定,this指向实际调用该方法的对象

var name = '张三'

function b() {
console.log('姓名:' + this.name)
}

var body = {
name: '李四',
detail: function () {
console.log('姓名:' + this.name)

},
total: {
name: '王五',
detail: function () {
console.log('姓名:' + this.name)

}
},
a: b

}
body.detail() //李四
body.total.detail() //王五
body.a() //李四



var name = '小红'
function a() {
var name = '小白';
console.log(this.name);
}

function d(i) {
return i()
}

var b = {
name: '小黄',
detail: function () {
console.log(this.name);
},
bibi: function () {
return function () {
console.log(this.name);
}
}
};
var c = b.detail;
b.a = a;
var e = b.bibi();
a(); //小红
c(); //小红
b.a(); //小黄
d(b.detail); //小红
e() //小红


 箭头函数中this指向?

 直接使用箭头函数的this指向调用它的对象。

 箭头函数的this向外层作用域中,一层层查找this,直到有this定义。

 箭头函数没有自己的this,导致内部的this就是外层代码块的this。正是因为它没有this,所以也就不能用作构造函数。



call和apply方法区别


call 和 apply 两个主要用途就是


1.改变 this 的指向(把 this 从 obj2 指向到 obj1 )


2.方法借用( obj1 没有 fn ,只是借用 obj2 方法)


  相同点:这两个方法的作用是一样的。都是在特定的作用域中调用函数,等于设置函数体内this对象的值,以扩充函数赖以运行的作用域。

     call 的参数是直接放进去的,第二第三第 n 个参数全都用逗号分隔,直接放到后面。

       

    apply 的所有参数都必须放在一个数组里面传进去




然后开始继续看看方案设计



返回列表 返回列表
评论

    分享到