{
const deciseconds = this._deciseconds % DECISECONDS_IN_SEC;
const seconds = (this._deciseconds / DECISECONDS_IN_SEC) % SECONDS_IN_MIN;
const minutes = this._deciseconds / DECISECONDS_IN_MIN;
return `${Math.floor(minutes)}:${Math.floor(seconds)}.${deciseconds}/${this._distance}`;
}
Если вызову его два раза в разные переменные. Они будут указывать на одну и ту же строку или это будут две разные строки хоть и одинаковые по содержанию? Я пока не могу понять где адреса посмотреть в VsCode при работе с Nodejs
зависит от того куда указывает this. это может быть две разные ссылки на тот же обьект. или разные ссылки на разные обьекты
На один и тот же объект
const создает новый обьект внутри функции но присваивание строки не копирует саму строку а копирует лишь указатель. насколько я вкурсе
вызовешь куда? в другую переменную? что значит на одну и туже строку? это будут две разные переменные, и возможно одинаковые по содержимому
const s1 = int1.toString(); const s2 = int1.toString(); Вот мне надо понимать, а что будет в этом коде? Я понимаю что s1, s2 указывают на объекты строк. Вопрос каких строк? Каждый раз когда вызван toString() , то будет создана новая строка? Или же нет? Тогда по содержимому одинаковы, но сами адреса строк разные. Вот мне интересно, как все на самом деле?
будут две переменные, независимые друг от друга, и если их содержимое будет равно, это две разные переменные
int1.toString() дергает код, который привел в https://t.me/js_noobs_ru/475887 . Вот смотря на этот код могу сделать предположение, что интерпретатору дешевле сделать строку с нуля, чем куда-то кэшировать . Так ли это?
а куда девается первоначальный const s1, const s2?
Я пишу модульный тест. Эти переменные будут содержать исходные "эталонные" значения. После вызова метода я буду проверять их содержимое изменилось или нет
Как-то так: test(`Interval.plus() doesn't mofify operands`, () => { const { int1, int2 } = ['2:28', '2:29.1'].map(s => Interval.fromString(s)); const s1 = int1.toString(); const s2 = int2.toString(); int1.plus(int2); expect(int1.toString()).toBe(s1); expect(int2.toString()).toBe(s2); });
и что? читайте про выделение памяти при создании переменных const, var, let
в какие ячейки пишите и тд
ты просто сравнишь строки по значению
Попробуй всё-таки Proxy. Может это то что тебе нужно. class Test { constructor () { this._value = 1 } methodA () { console.log('methodA') this._value = 2 return true } methodB () { console.log('methodB') return true } } const instance = new Test() const proxy = new Proxy(instance, { set: (obj, prop, value) => { console.log('trying to change the value') return Reflect.set(obj, prop, value) } }) proxy.methodA() proxy.methodB() console.log('change directly') proxy._value = 3
Обсуждают сегодня