javascript String.indexOf实现

群里abcd提出问题,现在有以下三个实现,欢迎大家参与(注意,为了兼容IE6,不能使用str[i],要用str.charAt(i);不能使用slice,replace等原生函数):

GrayZhang的实现

String.prototype.substring = function(start, length) {
    var array = [];
    for (var i = start; i 


我的实现:
//by 司徒正美 2011.8.18
String.prototype.indexOf = function(sub){
        var a = sub.charAt(0),an = sub.length,n = this.length;
        if(n == an){
          return this == sub ? 0 : -1
        }
        if(n 





abcd的实现:
function indexOf(s, t) {
        if (s.length) {
                var back = false;
                var i = 0;

                for (var j = 0; j < t.length; ++j) {
                        if (s.charAt(i) != t.charAt(j)) {
                                do {
                                        if (++i >= s.length) return -1;
                                        if (s.charAt(i) == t.charAt(j)) {
                                                if (j) back = true;
                                                break;
                                        }
                                }
                                while (true);
                        }
                        if (back) {
                                for (var k = 1; k <= j; k++)
                                        if (s.charAt(i - k) != t.charAt(j - k))
                                                continue;
                                back = false;
                        }
                }
                return i - j + 1;
        }
        return t.length && -1;
} 
http://proto.layer51.com/d.aspx?f=32
//---------------------------------------------------------------------------  
String.prototype.charAt = function(index){  
    return(substring(this, index+1, 1));  
}  
  
String.prototype.concat = function(){  
    var r = this.toString();  
    for (var i=0; i= 0) && (substring(this, i--, size) != sub));  
    return (i == -1 ? -1 : (i));  
}  
  
String.prototype.slice = function(s, e){  
    return(substring(this, s+1, e-s));  
}  
  
String.prototype.split = function(d){  
    if (d != null){  
        var r = new Array();  
        var size = this.length;  
        var c = 0;  
        var n = 0;  
        if (d != ""){  
            for (var i=0; i96 && upNo223 && upNo64 && upNo191 && upNo