Для избежания переопределения метода getItem в классе MemoryStorage, необходимо использовать другое имя для хранилища объекта this. Например, можно назвать его _storage и обращаться к нему в методах класса:
class MemoryStorage { constructor() { this._storage = {} } get length () { return Object.keys(this._storage).length } getItem (name) { return (name in this._storage) ? this._storage[name] : null } setItem (name, value) { this._storage[name] = value } removeItem (name) { const found = (name in this._storage) if (found) { delete this._storage[name] } } clear () { for (const k in this._storage) { delete this._storage[k] } } } const storage = new MemoryStorage() storage.setItem('getItem', 'getItem') // Не переопределяется getItem const item = storage.getItem('getItem') console.log('item:', item) storage.removeItem('getItem') storage.setItem('test', 'test') console.log('Length:', storage.length) console.log(Object.keys(storage._storage)) storage.clear() console.log(Object.keys(storage._storage)) console.log('Length:', storage.length)
Теперь метод getItem не будет переопределен при использовании setItem.
Для избежания переопределения метода getItem в классе MemoryStorage, необходимо использовать другое имя для хранилища объекта this. Например, можно назвать его _storage и обращаться к нему в методах класса:
class MemoryStorage {constructor() {
this._storage = {}
}
get length () {
return Object.keys(this._storage).length
}
getItem (name) {
return (name in this._storage) ? this._storage[name] : null
}
setItem (name, value) {
this._storage[name] = value
}
removeItem (name) {
const found = (name in this._storage)
if (found) {
delete this._storage[name]
}
}
clear () {
for (const k in this._storage) {
delete this._storage[k]
}
}
}
const storage = new MemoryStorage()
storage.setItem('getItem', 'getItem') // Не переопределяется getItem
const item = storage.getItem('getItem')
console.log('item:', item)
storage.removeItem('getItem')
storage.setItem('test', 'test')
console.log('Length:', storage.length)
console.log(Object.keys(storage._storage))
storage.clear()
console.log(Object.keys(storage._storage))
console.log('Length:', storage.length)
Теперь метод getItem не будет переопределен при использовании setItem.