【问题标题】:json and binding methodsjson和绑定方法
【发布时间】:2010-10-14 08:55:19
【问题描述】:

我有一个 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;
}

我现在做的是:

  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 }

如何将 Person 类的 javascript 方法绑定到 json 对象...?

【问题讨论】:

    标签: javascript json webservice-client overloading


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2022-12-04
      • 2017-11-06
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 2012-07-26
      • 1970-01-01
      相关资源
      最近更新 更多