Wtam, jestem tu po raz pierwszy, bo i od niedawna uczę się programować. Chciałbym prosić Was o pomoc w rozwiązaniu zadania, z którym sam nie po trafię się uporać. Z góry mówię, że nie oczekuję samego rozwiązania, ale naprowadzenia mnie na właściwą ścieżkę lub wskazanie punktu, w którym popełniam błąd. Pozwólcie że przejdę do rzeczy:)
Zadanie wygląda tak:
Należy wyobrazić sobie, że nie istnieje konstruktor String() i następnie stworzyć swój własny konstruktor, którego działanie będzie maksymalnie podobne do działania String(). Nie wolno używać również wbudowanych metod i pól tego obiektu.
Stworzyłem sobie więc następujący kod:
function MojString(a) {
this.toString = function() {
t = []
for (i = 0, len = a.length; i < len; i++) {
t[i] = a[i]
}
return t.join("")
}
this.length = (function() {
t = []
for (i = 0, len = a.length; i < len; i++) {
t[i] = a[i]
}
return t.length
})()
/*zastępczy (i prostszy) kod dla pola length:
this.length = a.length*/
}
var s = new MojString("hello")
Idźmy dalej:
jak widać - stworzyłem nowy obiekt s
; następnie zacząłem sprawdzać, czy działają na nim następujace pola i metody: length, toString() (zgodnie z poleceniem zadania). Działają, jednak przy sprawdzeniu pola length dzieje się coś dziwnego: pole rzeczywiście zwraca wartość 5 (s.length
), jednak gdy chcę sprawdzić poszczególne elementy obiektu za pomocą indeksów (s[0], s[1], s[2], s[3], s[4]) konsola zwraca mi undefined. I w tym miejscu się poddaję...