Я нахожусь на пути к объектно-ориентированному Javascript, и я не могу не чувствовать, что пропустил лодку в данном упражнении.Поэтому я ищу указатели на то, как я могу улучшить свой код или понять конструкторы.Здесь была задача :
Представьте, что конструктор String () не существует.Создайте функцию-конструктор MyString (), которая будет работать как String () настолько близко, насколько это возможно.Вам не разрешено использовать какие-либо встроенные строковые методы или свойства, и помните, что String () не существует.Вы можете использовать этот код для проверки вашего конструктора:
-
var s = new MyString ('hello');
s.length ();с [0];s.toString ();s.valueOf ();s.charAt (1);s.charAt ( '2');s.charAt ( 'е');s.concat («мир!»);s.slice (1,3);s.slice (0, -1);ДЕЛЕНИЕ ( 'е);ДЕЛЕНИЕ ( 'л');s.reverse ();
И вот мой ответ, который не сработал на одном или двух аккаунтах, но меня больше интересует его фактическая структура.Я полностью вне базы?Есть ли где-нибудь, где я могу просмотреть реальный конструктор String, реализованный браузерами, для сравнения?
function MyString(string){
a = string.split("");
this.length = a.length;
this.toString = function(){
return a.join("");
};
this.valueOf = function(){
if(a.length > 0 && string !== 0 && string !== false && string !== undefined){
return true;
} else {
return false;
}
};
this.charAt = function(index){
return a[index];
};
this.concat = function(addition){
return string + addition;
};
this.slice = function(begin, end){
var a2 = new Array();
if(end < 0){
end = parseInt(a.length) + end;
}
for(y = begin;y<end;y++){
a2 += a[y];
}
return a2;
};
this.split = function(splitter){
spPos = parseInt(a.indexOf(splitter));
var split1 = a.slice(0,spPos);
var split2 = a.slice(spPos + 1, a.length);
var joined = new Array();
return joined.concat(split1.join(""), split2.join(""));
};
this.reverse = function(){
var ar = a.reverse();
return ar.join("");
};
return this;
}
Я ухожу спать, но утром встану и отвечу.Большое спасибо за любые рекомендации, которые вы можете дать по этому вопросу.