Возвращаемая строка из класса - JavaScript - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть задача: var s = new MyString('hello'); после того, как эта переменная s должна вернуть строку 'hello' вместо объекта с 'hello' внутри, например: s[0] === 'h' Как это сделать в JavaScript? Основная цель в этой задаче - написать собственную реализацию класса String.

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Вы можете расширить свой класс с помощью String.

Пример фрагмента:

class MyString extends String {
    constructor(str){
        super(str);
    }
    
    getReverse(){
        return this.toString().split('').reverse().join('');
    }

}

var mystr = new MyString('hello');

console.log(mystr.toString()); 
console.log(mystr[0] == 'h'); 
console.log(mystr.getReverse()); 
0 голосов
/ 05 февраля 2020

Что ж, создание объекта с новым ключевым словом даст вам ... объект, очевидно. Чтобы вернуть строку, встроенную в вашу пользовательскую реализацию строки, вам понадобится что-то вроде этого:

class MyString {
    constructor(str){
        this.content = str;
    }

    getString(){
        return this.content;
    }
}

И использование:

var s = 'hello';
var strObj = new MyString(s);
var ss = s.getString();
console.log(s == ss); //true

Это потому, что вы сконструировали свой объект так, как будто это поле для вашей строки. Метод getString действует так, как будто вы распаковываете пакет и получаете обратно строку. Вот почему они равны на данный момент (потому что ни один из них не изменился между построением MyString и простой строкой).

Этот метод для создания getSomething называется getter, и аналогично setSomething называется setter, где setter не получает любые данные вне объекта, но устанавливающие что-то внутри него.

Конечно, есть способ изменить и тип строки, чтобы он мог выполнять ваши задачи и содержать ваши собственные методы, но, честно говоря, я не думаю, что это важно, ни удобно вам в данный момент. Тем не менее, проверьте прототип / прототипирование, если хотите. Удачи, братан!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...