Например * Веб-хранилище , которое .getItem()
возвращает null
для неизвестного ключа.
Обратите внимание, однако, что .getItem()
и .setItem()
специально определены в IDL как будучи назначенными getter
и setter
для Storage
интерфейса , и поэтому они также полностью поддерживают способы доступа к содержимому хранилища.
Однако []
синтаксис больше похож на обычный объект и / или свойство массива getter
, и подобно этим возвращает undefined
для неизвестного имени свойства.
Причина не использовать синтаксис []
состоит в том, что он будет сначала оперируйте свойствами объекта и, к счастью, сможете перезаписать реальные свойства и методы localStorage
object
, c .f:
Для Например:
> localStorage['address'] = function() { return 0 }
> localStorage.getItem('address')
0
Второй пример
В javascript вы всегда получаете значение undefined
для ключей, которые не существуют внутри объекта.
a = {}; //new object
alert(a["address"]); // you get 'undefined' because "address" keys is not found
В localStorage .getItem
- это метод, который проверяет ключи внутри объекта localStorage
и возвращает * 10 40 * если не найден.
Не вините javascript, это просто localStorage
объект поведение
под Хелпер Сервис поставил этот код
import { Injectable } from '@angular/core';
import * as CryptoJS from 'crypto-js';
@Injectable({
providedIn: 'root'
})
export class LocalStorageService {
constructor() {}
createLocalStorage(key: string, value: any){
console.log('value => '+value);
var cryptoData : any = CryptoJS.AES.encrypt(value, 'encoded data');
sessionStorage.setItem(key,cryptoData);
}
getLocalStorage(key){
var encodeData = sessionStorage.getItem(key);
if (encodeData) {
var decodeData = CryptoJS.AES.decrypt(encodeData, 'encoded data').toString(CryptoJS.enc.Utf8);
return decodeData;
} else {
return null;
}
}
}
и localalstorage setItem return undefined.
Вы можете проверить здесь