2024年最新js进阶 this指针详解(1),阿里P7大佬手把手教你

最后

面试题千万不要死记,一定要自己理解,用自己的方式表达出来,在这里预祝各位成功拿下自己心仪的offer。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

大厂面试题

面试题目录

alert(this.name);

}

getName(); //“window”

obj.getName.call(window)

getName函数是一个单独函数(非某对象方法),所以创建后就归属到了window对象之下,调用时this指向window。

三、构造函数模式


如果在一个函数前面加上new关键字来调用,那么就会创建一个连接到该函数的prototype成员的新对象,同时,this会被绑定到这个新对象上。这种情况下,这个函数就可以成为此对象的构造函数。例如:

function obj(){

this.name = “obj”;

}

var o = new obj();

alert(o.name); //“obj”

使用new创建对象o时,实际上,对象o就是obj.prototype ,只是上面还在new 时执行了构造函数绑定的name值

四、apply调用模式


在JS中,函数也是对象,所有函数对象都有两个方法:apply和call,这两个方法可以让我们构建一个参数数组传递给调用函数,也允许我们改变this的值。例如:

var name = “window”;

var obj = {

name : “obj”

};

function getName(){

alert(this.name);

}

getName.apply(); //“window”

getName.apply(obj); //"obj

直接调用函数对象getName的apply方法,由于没有参数,所以被划归到了全局作用域中,this指向了window对象;

将getName函数在obj对象上调用,函数体内的this也就指向了obj对象;

练习


var name = “window”;

function printName(){

alert(this.name);

}

var obj1 = {

name : “obj1”,

getName : printName

};

var obj2 = {

name : “obj2”,

getName : function(){

var func = obj1.getName;

func();

}

};

obj1.getName();

最后

面试题千万不要死记,一定要自己理解,用自己的方式表达出来,在这里预祝各位成功拿下自己心仪的offer。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

大厂面试题

面试题目录

[外链图片转存中…(img-hT0lOJtA-1715064612924)]

[外链图片转存中…(img-MLGdYzTg-1715064612925)]

[外链图片转存中…(img-pY8CfJB2-1715064612926)]

[外链图片转存中…(img-wrojNb4H-1715064612926)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值