由于String() 不存在,因此在写该构造器函数时不能使用任何属于内建String对象的方法和属性。并且为您创建的对象通过一下测试:>s.length; 5 >s[0]; "h" >s.toString(); "hello" >s.valueOf(); "hello" >charAt(1); "e" >charAt('2'); "l" >charAt('e'); "l">s.concat(' world');"hello world">s.slice(1.3);"el">s.slice(0,-1);"hell">s.split('e');["h","llo"]>s.split("l");["he","","o"]
1 回答
geront
TA贡献1条经验 获得超0个赞
var MyString=function(str) { var list = []; for (var i in str) { list[i] = str[i]; } this.list = list; this.toString=toString; this.valueOf=valueOf; this.charAt=charAt; this.concat=concat; this.slice=slice; this.split=split; this.reverse=reverse; }; function toString(){ var a_str=''; for(var i=0;i<this.list.length;i++) { a_str+=this.list[i]; } return a_str; } function valueOf(){ return this.toString(); } function charAt(n){ var c_str=''; c_str=this.list[n] return c_str; } function concat(ch){ return this.toString()+ch; } function slice(m,n){ var s_str=''; if(n>0){ for(var i=m;i<n;i++){ s_str+=this.list[i]; } }else if(n<0){ var len=this.list.length; for(var i=m;i<n+len;i++){ s_str+=this.list[i]; } } return s_str; } function split(element){ for(var i=0;i<this.list.length;i++){ if( this.list[i]==element){ return i; } } var slist=[]; slist=this.list.split(i,1); return slist; } function reverse(){ var re_str=this.list.reverse(); return re_str.join('').toString(); } var s=new MyString('hello'); s.toString(); //'hello' s.valueOf(); //'hello' s.charAt(2); //'l' s.concat(' world'); //'hello word' s.slice(1,3); //'el' s.slice(0,-1); //'hell' s.split('e'); //"h", "l", "l", "o" s.reverse(); //'olleh'
添加回答
举报
0/150
提交
取消