1

私は次のようなPersonjavascriptクラスを持っています

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. 次のようなWebサービスから文字列を送信します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オブジェクトにバインドするにはどうすればよいですか...?

4

1 に答える 1

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.
   }
}

2番目の質問「javascriptメソッドをjsonオブジェクトにバインドする方法」を理解していないと思います。

jsonとにかく、文字列をjavascriptオブジェクトに「解析」する必要があります。これはwindow.JSON.parse(<jsonstring>)、「最新の」ブラウザで使用することで実行できます。古いブラウザ(IE7など)は、同じ機能を提供するためにwww.json.orgjson2.jsからを必要とします。

于 2010-10-14T09:00:26.753 に答える