一些 native 方法的实现

2 views
Skip to first unread message

kindy

unread,
Nov 10, 2007, 10:14:50 PM11/10/07
to Unitjs
由于 JavaScript 的发展,新的引擎添加了许多的方法,为了兼容旧版本的引擎,因此很多人自己实现了那些新添加的 native 方法。特此
记录,以备后查。

String.prototype.replace = function(search,replace){
// replace is not function
if(typeof replace != "function"){
return default_replace.apply(this,arguments)
}
var str = "" + this;
var callback = replace;
// search string is not RegExp
if(!(search instanceof RegExp)){
var idx = str.indexOf(search);
return (
idx == -1 ? str :
default_replace.apply(str,[search,callback(search, idx, str)])
)
}
var reg = search;
var result = [];
var lastidx = reg.lastIndex;
var re;
while((re = reg.exec(str)) != null){
var idx = re.index;
var args = re.concat(idx, str);
result.push(
str.slice(lastidx,idx),
callback.apply(null,args).toString()
);
if(!reg.global){
lastidx += RegExp.lastMatch.length;
break
}else{
lastidx = reg.lastIndex;
}
}
result.push(str.slice(lastidx));
return result.join("")
}

Reply all
Reply to author
Forward
0 new messages