我有一个类似 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')
在客户端评估字符串,如:
数据类型:json, 成功:功能(消息){ globalObj = eval(msg.d); },
- 并使用 javascript 对象及其功能。
globalObj.f_IncreaseSalary(0.2);
但我认为我应该在 json 中返回字符串,例如:
"Person": {"name":"Cem", "id":1000, "salary":15000 }
如何将 Person 类的 javascript 方法绑定(bind)到 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 方法绑定(bind)到 json 对象”。
您需要“解析”json
无论如何,将字符串转换为 javascript 对象。这可以通过使用 window.JSON.parse(<jsonstring>)
来完成在“现代”浏览器中。较旧的浏览器(如 IE7)需要 json2.js
来自 www.json.org提供相同的功能。
关于javascript - json和绑定(bind)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3931578/