javascript面向对象(十五)

<!doctype html>
<html>
  <head>
    <title>标题</title>
    <meta charset="utf-8">
    <script>
if(Function.prototype.bind===undefined){
  Function.prototype.bind=
    function(obj/*,args1*/){
      var fun=this;//原函数对象
      //arguments:[obj,xx,xx,xx,]
      var args1=
        Array.prototype.slice.call(
          arguments,1
        );//arguments.slice(1)
      return function(/*args2*/){
        //arguments=>args2
        //类数组对象转数组
        var args2=
          Array.prototype.slice.call(  
            arguments/*,?*/
          );//arguments.slice()
        //this->obj替换this
        fun.apply(
          obj,args1.concat(args2));
      }
    }
}
function calc(base,bonus){
  document.write(this.name+
    "的总工资是"+(base+bonus)+"<br>");
}
//this:和定义的位置无关!
//     只和调用时,.前的对象有关
var lilei={name:"Li Lei"};
var hmm={name:"hmm"};
calc.call(lilei,10000,5000);//临时借用
calc.call(hmm,9000,8000);//临时借用
var lilei_calc=calc.bind(lilei,10000);
//lilei_calc:function(){//永久绑定
  //this->lilei ; base->10000
  //calc
//}
lilei_calc(5000);
lilei_calc(6000);
var hmm_calc=calc.bind(hmm,9000)
hmm_calc(8000);
    </script>
  </head>
  <body>
    
  </body>
</html>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值