无法使用sessionStorage分配对象

时间:2015-08-19 17:22:16

标签: javascript jquery session-storage

我尝试使用jQuery分配一个对象以进一步处理,但它不起作用。 这是我的代码:

$('.var').on('click', function () {
  console.log($(this));
  sessionStorage.setItem('object', JSON.stringify($(this)));
  console.log(JSON.parse(sessionStorage.getItem('object')));
}

两个控制台日志都没有相同的值。为什么呢?

第二个例子:

$('.var').on('click', function () {
  sessionStorage.setItem('object', JSON.stringify($(this)));
  var item = JSON.parse(sessionStorage.getItem('object'));
  item.addClass('not-work');  //does not work
  $(this).addClass('work');   //works
  e.preventDefault();
}

我在sessionStorage()上做错了什么。

2 个答案:

答案 0 :(得分:2)

JSON.stringify从字符串化对象中剥离方法,因为有效的JSON不包含函数。

示例:

var obj = {
prop: 5,
method: function() {}
};

JSON.stringify(obj);

结果:"{"prop":5}"

答案 1 :(得分:0)

@Ori Drori's answer解释了第一个例子。

在第二个示例中,您获取DOM元素(jquery包装),将其转换为string!并保存在sessionStorage中。

然后从sessionStorage中获取此string,为了获取DOM元素而执行JSON.parse,但是您将获得一个javascript对象,它肯定不是DOM中的元素树(我相信你很期待)&因此,在其上调用.addClass并不起作用。