js使用eval处理json字符串得到的对象如何支持prototype属性?

猫小 发布于 2013/01/28 17:49
阅读 1K+
收藏 1
//第一种解析纯数据json为具有方法的对象

function Don(jstr){
 var json = eval('(' + jstr + ')');
 json.sayAge = function(){
  alert(this.age);
 }
 json.sayName = function(){
  alert(this.name);
 }
 return json;
}

//第二种方法解析纯数据json为具有方法的对象

function Fen(jstr){
 this.json = eval('(' + jstr + ')');
}
Fen.prototype = new Object();
Fen.prototype.sayAge = function(){
  alert(this.json.age);
}
Fen.prototype.sayName = function(){
  alert(this.json.name);
}

var str = '{"name" : "don","age" : "23"}';
var d = new Don(str);
str = '{"name" : "fen","age" : "21"}';
var f = new Fen(str);

d.sayName();
d.sayAge();
f.sayName
f.sayAge();

//疑问:如果让eval得到的对象支持prototype属性?

function Obj(jstr){

    return eval('(' + jstr + ')');

}

Obj.prototype = new Object();

Obj.prototype.sayName(){

    alert(this.name);

}

Obj.prototype.sayAge(){

    alert(this.age);

}

//想实现这第三种方案,如何在不降低效率的前提下搞?求助。

 

加载中
1
猫小
猫小
沙发自己占,求帮忙!
0
h
zkxw2008
zkxw2008
就是把字符串转换为对象
返回顶部
顶部