2010-10-14 43 views
1

我有一个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服务

  1. 发送串像new Person('cem','1000','15000')
  2. 评估客户端的字符串如:

    dataType:json, success:function(msg){ globalObj = eval(msg.d); },

  3. 并将javascript对象与其函数一起使用。 globalObj.f_IncreaseSalary(0.2);

但我想我应该JSON中返回一个字符串,如: "Person" : {"name":"Cem", "id":1000, "salary":15000 }

我怎么能在人班组长的JavaScript方法绑定到JSON对象...?

回答

2

在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.orgjson2.js才能提供相同的功能。