ECMA 6 Class proprty
Доброго времени суток, ни как не могу понять что с классами не так. Есть класс, есть свойство, которое почему-то работает как указатель, вобщем вот код
class A {
constructor() {
this._test = [];
}
get test() {
return this._test;
}
method() {
let tmp = this._test;
tmp.push('qe');
this._test = ['tmp'];
return true;
}
}
let a = new A();
let b = a.test;
a.method();
console.log(b);
Результат будет ['qe'], а не пустой массив. Объясните пожалуйста логику. И как получать значение вместо ссылки |
macros_kh,
get test() {
return this._test.slice(0);
}
|
спасибо, осталось понять логику, т.к. если использовать присваивание вместо push, то такого эффекта не возникает
|
допустим, но тогда почему если вместо
tmp.push('qe');
мы напишем tmp = ['qe'];то все работает отлично? |
macros_kh,
указатель tmp перевели с одного обьекта на другой в b остался прежний обьект, в tmp второй обьект, а в this._test уже третий обьект. |
| Часовой пояс GMT +3, время: 13:46. |