我有像
这样的Person javascript类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;
}
我现在正在做的是:
new Person('cem','1000','15000')
在客户端评估字符串,如:
dataType:json,
success:function(msg){
globalObj = eval(msg.d);
},
globalObj.f_IncreaseSalary(0.2);
但我想我应该在json中返回字符串,如:
"Person" : {"name":"Cem", "id":1000, "salary":15000 }
如何将Person类的javascript方法绑定到json对象...?
答案 0 :(得分:2)
ECMA- / Javascript中不可能“重载”这样的方法/函数。
一个好的解决方法是检查arguments对象,比如
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
来提供相同的功能。