this指向,箭头函数的this指向,改变this指向

this指向
this的最终指向是那个调用它的对象;
本质:this最终指向的是一个对象,this是一个指针。

普通函数的this指向window
function a() {
console.log(this);
}
a();

构造函数调用,this指向实例化的对象
function Person(name, age) {
this.name = name;
this.age = age;
console.log(this);
}
var p1 = new Person('sp', 18);
var p2 = new Person('sx', 19);

对象方法调用,this指向调用方法的对象
var obj = {
fn: function() {
console.log(this)
}
}
obj.fn();

事件绑定方法,this指向的是事件绑定的对象

<button id="btn">hh</button>

定时器函数,this指向的是window
setInterval(function() {
console.log(this);
}, 1000);

箭头函数的this指向
指向箭头函数定义时所处的对象,而不是箭头函数使用时所在的对象,默认使用父级的this
具体事例待更新。。。。。。

更改this指向
call(),apply(),bind()
call()方法调用一个对象,但可以改变this指向;
fun.call(thisArg, arg1, arg2)

var Person = {
name: 'sp',
age: 18
}
function fn(x, y) {
console.log(x + ',' + y);
console.log(this);
console.log(this.name);
console.log(this.age);
}
fn.call(Person, 'yy', 20);

apply()方法可以改变函数this指向;
fun.apply(thisArg, [args])

bind()方法不会调用函数,能改变内部this;
fun.bind(thisArg, arg1, arg2)
bind新建了一个函数,称为绑定函数,与被调用函数具有相同的函数体,当调用函数时this值绑定到bind()的第一个参数上。

call(),apply(),bind()总结:
不同:
call,apply会直接调用函数,bind不会调用函数;
call,apply传递的参数不一样,call为参数arg1,arg2,apply为数组[args];
应用:
call做继承;
apply和数组有关;
bind可不调用函数且可以改变this指向。

全部评论

相关推荐

不愿透露姓名的神秘牛友
2025-12-17 16:48
今天九点半到公司,我跟往常一样先扫了眼电脑,屁活儿没有。寻思着没事干,就去蹲了个厕所,回来摸出手机刷了会儿。结果老板刚好路过,拍了我一下说上班别玩手机,我吓得赶紧揣兜里。也就过了四十分钟吧,我的直属领导把我叫到小隔间,上来就给我一句:“你玩手机这事儿把老板惹毛了,说白了,你可以重新找工作了,等下&nbsp;HR&nbsp;会来跟你谈。”&nbsp;我当时脑子直接宕机,一句话都没憋出来。后面&nbsp;HR&nbsp;找我谈话,直属领导也在旁边。HR&nbsp;说我这毛病不是一次两次了,属于屡教不改,不光上班玩手机,还用公司电脑看论文、弄学校的事儿。我当时人都傻了,上班摸鱼是不对,可我都是闲得发慌的时候才摸啊!而且玩手机这事儿,从来没人跟我说过后果这么严重,更没人告诉我在公司学个习也算犯错!连一次口头提醒都没有,哪儿来的屡教不改啊?更让我膈应的是,昨天部门刚开了会,说四个实习生里留一个转正,让大家好好表现。结果今天我就因为玩手机被开了。但搞笑的是,开会前直属领导就把我叫去小会议室,明明白白告诉我:“转正这事儿你就别想了,你的学历达不到我们部门要求,当初招你进来也没打算给你这个机会。”合着我没入贵厂的眼是吧?可我都已经被排除在转正名单外了,摸个鱼至于直接把我开了吗?真的太离谱了!
rush$0522:转正名单没进,大概率本来就没打算留你
摸鱼被leader发现了...
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务