面向对象的JSON
使用JQuery的extend来表现JSON的面向对象形式。
例如有个JSON结构:
<script src="jquery-1.2.6.min.js"></script>
<script>
var People = {
name: '',
sex: 0,
birth: '',
Speak: function() {
var sexCN = this.sex == 1 ? '男' : '女';
alert('我叫:' + this.name + ',' + sexCN + '性,出生于:' + this.birth);
}
};
var p1 = $.extend({}, People, { name: '张三', sex: 1, birth: '2007-1-1' });
var p2 = $.extend({}, People, { name: '李四', sex: 2, birth: '2007-2-1' });
p1.Speak();
p2.Speak();
</script>
<script>
var People = {
name: '',
sex: 0,
birth: '',
Speak: function() {
var sexCN = this.sex == 1 ? '男' : '女';
alert('我叫:' + this.name + ',' + sexCN + '性,出生于:' + this.birth);
}
};
var p1 = $.extend({}, People, { name: '张三', sex: 1, birth: '2007-1-1' });
var p2 = $.extend({}, People, { name: '李四', sex: 2, birth: '2007-2-1' });
p1.Speak();
p2.Speak();
</script>
$.extend 方法是JQ的一个方法,可以看下JQ的API,包括:EXT在内很多JS框架都会有类似extend方法,$.extend({},People,{name:'',sex:1,birth:'2007-1-1'});类似于C#的继承,你也可以把它理解为new了个新对象。
同样的你也可以重写Speak方法。
<script>
var People = {
name: '',
sex: 0,
birth: '',
Speak: function() {
var sexCN = this.sex == 1 ? '男' : '女';
alert('我叫:' + this.name + ',' + sexCN + '性,出生于:' + this.birth);
}
};
var p1 = $.extend({}, People, { name: '张三', sex: 1, birth: '2007-1-1' });
p1.Speak();
p1 = $.extend(p1, {
Speak:function(){
alert('我姓'+this.name.substr(0,1)+'名'+this.name.substr(1,1));
}
});
p1.Speak();
</script>
var People = {
name: '',
sex: 0,
birth: '',
Speak: function() {
var sexCN = this.sex == 1 ? '男' : '女';
alert('我叫:' + this.name + ',' + sexCN + '性,出生于:' + this.birth);
}
};
var p1 = $.extend({}, People, { name: '张三', sex: 1, birth: '2007-1-1' });
p1.Speak();
p1 = $.extend(p1, {
Speak:function(){
alert('我姓'+this.name.substr(0,1)+'名'+this.name.substr(1,1));
}
});
p1.Speak();
</script>
注:JSON的作用不值如此,在不同程序中通信也有很好的效果的。