顶一下,明天看
个人不喜欢用JS写OO,对于这方面的几乎一窍不通,学习一下了要……

解决方案 »

  1.   

    哈哈, 一般我不这么用, 喜欢这么用。
    Function.prototype.bind = function(object) {
      var method = this
      return function() {
        return method.apply(object, arguments);
      }
    }function oo(){
        this.s = "s1";
        
        var f1 = function(s){ alert(this.s + s); };
        f1.bind(this)("s2");
        
        var f2 = function(s){ alert(this.s + s); }.bind(this);
        f2("s2");
        
        var f3 = function(s){ alert(this.s + s); }.bind(this);
        f3("s2");
        
        var f4 = function(s1, s2){ alert(this.s + s1 + s2); }.bind(this);
        f4("s2", "s3");
    }new oo()总结, 个人觉得我的这种用法更简单, 直观
      

  2.   

    呵呵,我才学JS一个星期,而且看的是过期版的权威3,
    Function.prototype.bind = function(object) {
      var __method = this, args = Array.prototype.slice.call(arguments); args.shift();
      return function() {
        return __method.apply(object, args.concat(Array.prototype.slice.call(arguments)));
      }
    }
    这一段代码没完全搞明白,LZ能帮忙解说下么,谢谢了
      

  3.   


    你的是简化了的bind
    如果不需要bind的时候直接插参数可以用那个
      

  4.   


    function oo(){
        this.s = "s1";
        
        var f1 = function(s){ alert(this.s + s); };
        f1.bind(this, "s2")();
        
        var f2 = function(s){ alert(this.s + s); }.bind(this, "s2");
        f2();
        
        var f3 = function(s){ alert(this.s + s); }.bind(this);
        f3("s2");
        
        var f4 = function(s1, s2){ alert(this.s + s1 + s2); }.bind(this, "s2");
        f4("s3");
    }new oo();
    貌似木有必要這樣封裝一下吧?
      

  5.   

    还是有用的
    例如
    function oo(){
    this.a = "aa";
    this.t = setTimeout(function(){ alert(this.a) }.bind(this), 500);
    };new oo();
      

  6.   

    楼主也是参考了prototype的bind方法吧
      

  7.   


    是啊
    以前很少用毕竟会修改function
    不过近来发现原来是很有用的
      

  8.   


    这个确实有用哦, 一般用于callback, 避免了callbackObject, callbackFunction的形式, 只要一个bind就搞定, 强。另外一个用处是作为事件的处理函数,
    Function.prototype.bindAsEventLisener = function(object)
    {
      var method = this;
      return function(event) {
        method.call(object, event || window.event);
      }
    }