将方法添加到JSON读取对象

时间:2013-01-10 05:00:42

标签: javascript

  

可能重复:
  Easiest way to convert json data into objects with methods attached?
  Casting plain objects to function instances (“classes”) in javascript

我有一个如下对象:

var Person = function(name, age) {
  this.name = name,
  this.age = age;
}

Person.prototype.talk = function(message) {
    console.log(message);
}

我按如下方式创建对象:

var person = new Person("Test", 20);

然后将这些对象保存为浏览器的本地存储中的JSON(stringify)

当我读回对象时,我得到了数据,但我没有附加方法,即talk()不再作为方法可用。我该如何重新附上它们?

window.localStorage["person"] = JSON.stringify(new Person('Test', 20));
var person = window.localStorage["person"];
person.talk("Hello");

我得到的错误是

Uncaught TypeError: Object {"name":"Test","age":20} has no method 'talk' 

明显,对吗?但是我如何判断这是一个Person对象呢?或者我应该将读取对象中的属性复制到新的Person对象上,这是唯一的方法吗?

1 个答案:

答案 0 :(得分:1)

Or should I just copy the attributes from the read object onto a new Person object, is that the only way?

是的,创建一个PersonFactory或使用类似的设计模式从表示Person的json数据构造一个新的Person对象。