精通Javascript 之 上下文对象

理解上下文对象是理解JS面向对象的基础。上下文对象是通过this变量体现的,这个变量永远指向当前代码所处的对象中,全局变量其实是window对象的属性。看一个上下文对象操作的简单的例子:
//*********************************************************
 //在上下文对象内使用函数并将其上下文对象切换为另一个变量
 //*********************************************************
 var obj = {
 yes: function(){
 this.val = true;
 },
 no: function(){
 this.val = false;
 }
 };
 // 这个时候obj对象中没有val这个变量
 alert( obj.val == null );
 // 执行yes函数之后,val变量和obj对象联系起来
 obj.yes();
 alert( obj.val == true );
 // 我们把window.no指向obj.no并执行
 window.no = obj.no;
 window.no();
 // obj.val的值并没有变,而且window里有了val变量且值为false
 // 因为window.no在执行的时候上下文是window
 alert( obj.val == true );
 alert(window.val == false);
但是我们在把obj.no的上下文对象切换为window时,代码变得不好理解了。JS提供了call和apply两个方法,可以用于实现这一功能。我们把上边的代码里的window.no = obj.no; window.no(); 替换成 obj.no.call(window);或者obj.no.apply(window);会得到同样的结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值