2015-08-14 100 views
0

我正在通過Stoyan Stefanov編寫的面向對象的JavaScript中的練習。練習要求我爲String對象創建一個函數構造函數。內置的字符串屬性或方法都不能使用。我試圖重新創建一個字符串的某個索引返回一個字符。所以下面的代碼是我沒法把工作鍛鍊的一部分:我無法弄清楚如何使我的函數構造函數中指定的索引處返回字符爲我自己的函數構造函數編寫一個字符串對象

var s = new MyString('hello'); 
s[0]; 

。我應該能夠在屏幕上顯示字符'h'。我能夠專門定位某些索引,但這不可用,因爲可能有任何數量的字符傳遞給函數構造函數。下面是代碼,這個返回值是爲構造函數本身:

return { 
    '0': this.string[0]; // Is this code using built-in String object properties or methods? 
} 

好吧,如果你能指出我在正確的方向。

+0

是鍛鍊的一部分嗎?如果沒有,你只是用你自己的代碼:不要,只是使用普通的字符串。如果是這樣,你的'MyString'可能需要一個數組作爲原型。 –

+0

我只是在做練習? – gr4vy

+1

由於您正在尋找方向,而不是答案,我可以建議使用數組來存儲字符串字符 – potatopeelings

回答

0

一個簡單的方式實現這一目標是不讓它像一個真正的字符串,但只處理與字母存在使用forEach在輸入字符串數組運行:

var MyString = function(content) { 
    var thisObject = this; 
    var letters = content.split(''); 
    letters.forEach(function(letter, position) { 
    thisObject[position] = letter; 
    }); 
}; 

JS對象都是動態屬性/值映射,所以你可以設置一個有效的綁定,並且有效。

這有意義嗎?不是真的?如果它告訴你,你的代碼應該允許yourstring[somenumber],我不太明白這個練習教給你什麼,但是這將是一種方法。

+0

這確實有效,但練習說不使用任何內置的String對象方法,例如.split()。 – gr4vy

+0

所以使用'for'循環。我不知道你的任務文本實際上是怎麼說的,但這聽起來像是一個非常奇怪的練習(我不知道爲什麼你會讓某人這樣做) –

相關問題