《悟透JavaScript》学习札记六之放下对象

本文深入探讨了JavaScript中的this关键字及其作用于不同上下文环境时的行为,通过实例展示了如何在函数调用中正确使用this,理解其指向的对象,并讨论了在不同对象间调用方法时this的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Codes:

function WhoAmI()
{
alert("I'm " + this.name + " of " + typeof(this));
};
WhoAmI(); // output: I'm of object
// 此时this是根对象window,其name属性为空字符串
var Bill = {name: "Bill"};
Bill.WhoAmI = WhoAmI; // 将函数WhoAmI作为BillGates的方法。
Bill.WhoAmI();// this是Bill,output: I'm Bill of object
var Sam = {name: "Sam"};
Sam.WhoAmI = WhoAmI;
Sam.WhoAmI(); // output: I'm Sam of object

WhoAmI.call(Bill); //output: I'm Bill of object
WhoAmI.call(Sam); // output: I'm Sam of object

Bill.WhoAmI.call(Sam); // 将Sam作为this,却调用Bill的方法。output: I'm Sam of object
Sam.WhoAmI.call(Bill); // 将Bill作为this,却调用Sam的方法。output: I'm Bill of object

WhoAmI.WhoAmI = WhoAmI; // 将WhoAmI函数设置为自身的方法。
WhoAmI.name = "WhoAmI";
WhoAmI.WhoAmI(); // 此时的this是WhoAmI函数自己。output: I'm WhoAmI of object

({name: "nobody", WhoAmI: WhoAmI}).WhoAmI(); // 创建一个匿名对象并调用其方法。output: I'm nobody of object

以上代码可以看出,this并不一定是函数本身所属的对象。在JavaScript函数中,你只能把this看成当前要服务的“这个”对象。在一般对象语言中,方法体代码中的this可以省略,成员默认都首先是“自己”的。但JavaScript却不同,由于不存在“自我”,当访问“这个”对象时,this不可省略。

注:self属性表示网页结构的当前window对象,以及frame或iframe元素的window对象。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值