JSON和装订方法
问题描述:
我有一个Person JavaScript类像JSON和装订方法
function Person(_name, _id, _salary){
this.Name = _name;
this.Id = _id;
this.Salary = _salary;
}
首先,我想重载与构造函数:
function Person(_person){
this.Name = _person.Name;
this.Salary = _person.Salary;
this.Id = _person.Id;
}
但我无论做什么,它进入第一个功能...!?
二,我有一些功能,这个JavaScript类,如:
Person.prototype.f_IncreaseSalary = function(_percentage){
this.Salary *= _percentage;
}
什么我现在做的是:从Web服务
- 发送串像
new Person('cem','1000','15000')
-
评估客户端的字符串如:
dataType:json, success:function(msg){ globalObj = eval(msg.d); },
- 并将javascript对象与其函数一起使用。
globalObj.f_IncreaseSalary(0.2);
但我想我应该JSON中返回一个字符串,如: "Person" : {"name":"Cem", "id":1000, "salary":15000 }
我怎么能在人班组长的JavaScript方法绑定到JSON对象...?
答
在ECMA-/Javascript中不可能“重载”这样的方法/函数。
一个很好的解决方法是检查参数对象,像
function Person(){
if(typeof arguments[0] === 'object'){
// addional checks
this.Name = arguments[0].Name;
this.Salary = arguments[0].Salary;
// etc.
}
else if(arguments.length === 2){
this.Name = arguments[0];
this.Salary = arguments[1];
// etc.
}
}
我不认为我明白你的第二个问题,“如何绑定的JavaScript方法,以JSON对象”。
无论如何,您需要将“json
”字符串“解析”为javascript对象。这可以通过在“现代”浏览器中使用window.JSON.parse(<jsonstring>)
来完成。旧版浏览器(如IE7)需要www.json.org的json2.js
才能提供相同的功能。