JSON и методы привязки - PullRequest
       7

JSON и методы привязки

1 голос
/ 14 октября 2010

У меня есть класс 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 }

Как я могу связать javascript-методы класса Person с объектом json ...?

1 Ответ

2 голосов
/ 14 октября 2010

В 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) нуждаются в json2.js с www.json.org , чтобы предлагать те же функции.

...