关于js的this上下文环境绑定

javascript的this关键字很特别和actionscript2.0时期this指向是一样的,如果你以前是个actionscript2.0的coder那肯定是往事不堪回首。actionscript3.0以后this关键字就是指向类本身,而javascript至今还是未实现this始终指向类本身的功能。
新版本的ECMAScript5中已经加入了bind函数以控制this关键字的绑定,但是在这之前最好还是自己实现bind函数,通过判断Function.prototype.bind是否支持来实现自己的bind函数,如果已经实现则使用浏览器原生支持的方法。
1、简易的绑定this到某对象上
 
   

if (! Function . prototype . bind ){
Function . prototype . bind  =  function ( obj ){
var  self  =  this ;
return  function (){
return  self . apply ( obj );
}
};
}

使用方法:
 
   

var  foo  =  {
name : 'foo' ;
sayName :  function (){
console . log ( this . name );
}
}
foo . sayName . bind ( foo );

2、prototype框架使用的this绑定方法可传递参数
 
   

if  (! Function . bind )  {
         Function . prototype . bind  =  function ()  {
             var  fn  =  this ,  args  =  Array . prototype . slice . call ( arguments ),  object  =  args . shift ();
             return  function ()  {
                 return  fn . apply ( object ,  args . concat ( Array . prototype . slice . call ( arguments )));
             };
         };
     };

使用方法:
 
   

func.bind(this, 1,2,3);//绑定并传递额外的参数1,2,3等

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值