Как я могу получить «это = это» в работе прототипа
Хорошо, Пип, так что я знаю, что это плохая практика - связываться с прототипами, но здесь это все равно ...
Array.prototype.rev=
function(){
this.reverse();
}
Работает отлично! Обновляет переменную исходного массива,ary
как ожидается, например:
ary = [123, 456];
ary.rev();
// result: ary == [456, 123]
Моя проблема возникает при написании аналогичного свойства дляString
.
То, что я хотел бы сделать, это что-то вроде этого ...
String.prototype.rev=
function(){
this.split('');
this.reverse();
this.join('');
}
Кажется, достаточно просто правильно! Разбейте строку, переверните ее и соедините вместе, чтобы получить исходную строковую переменную,str
, является противоположностью своего прежнего я, как было сary
выше!
Дело в том, что хотяthis.split()
был вызван, его нужно сохранить как переменную, то есть:
split = this.split('');
И там в ложьthis = this
проблема ...
Сейчасsplit
определяется, это отвлекает внимание от редактирования исходной переменной, и это не так, как я могу просто сказать в конце функции:
this = split;
Какthis
является «неизменным» или что это такое, когда они имеют в виду, что оно статично и неизменно?
str = 'abc'
Я хочу быть в состоянии сказатьstr.rev()
неstr = str.rev()
и получить результатstr = 'cba'
гдеstr === 'cba'
лови мой занос ?!
Все обходные пути и обучение приветствуются, я просто спрашиваю, что ты знаешь, о чем ты говоришь. Спасибо