在String()構造器不存在的情況下自定義一個MyString()函數,實現如下內建String()方法和屬性:
var s = new MyString(“hello”);
s.length; //5
s[0]; //"h"
s.toString(); //"hello"
s.charAt(1); //"e"
s.charAt("e"); //"h" (這個是怎麼來的???)
s.slice(0,-1); //"hell"
s.split("e"); //["h","llo"]
s.reverse(); //"olleh"
題目提示用把字符串當做數組用for循環遍歷,(但是用for循環不就會用到“.length”屬性了嗎?)請教大家,謝謝!
這個和之前的MyArray是相同的思想,都是數據結構封裝。
之前我給你說[]不好實現,原來是我理解偏差,非要設計成函數構造器調用模式就陷入進去了。
剛才我想想,其實這個[]不是自己實現的,利用數組才能完成。
所以數組是核心,既然js中一切是對象,那麼數組也是,可以像函數一樣添加別的屬性和方法。
題目提示用把字符串當做數組用for循環遍歷,(但是用for循環不就會用到“.length”屬性了嗎?)
在js以及python等語言中有一個 輔助的for循環 是 for-in循環
可以用來便利一個可迭代的對象,比如字符串,數組,列表,元組等數據對象
所以便利一個字符串可以使用for-in
既然這樣你可以用它把一個字符串轉化成一個字符數組
var MyString = function(str){
... var list = [];
... for(var c in str){
..... list.push(c);
..... }
...
... list.toString = function(){
... var str = "";
... for(var p in list){
..... str = str+p;
..... }
... return str;
... }
...
... list.charAt = function(index){
... return list[index];
... }
return list;
... }