天天看點

JavaScript 原生實作函數 bind()方法

JavaScript 代碼

var hh=34;
     var bb = {
       hh:12
     }
     function gg(){
       alert(this.hh)
     } 
     Function.prototype.bind = function(obj){
      obj.fun = this;
      return function(){
        obj.fun()
      }
     };
 var yy= gg.bind(bb);
     yy();   //12
           

原理

1.給函數的原型對象添加bind 方法 這樣所有函數都可以使用這個方法。

2.this.指向調用的主體 當函數gg調用bind方法時 bind方法中的this指向gg 也就是等于gg ,将this 作為方法添加給傳入的對象。

3.以函數傳回執行這個對象的gg 方法 因為不是立即執行,是以要以函數傳回。

歡迎讨論指正,如有更好的方法,歡迎留言互相學習。

繼續閱讀