在String() 构造器不存在的情况下自定义一个MyString()的构造器函数?

由于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"]



geront
浏览 1565回答 1
1回答

geront

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'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript