1
function Person(_name, _id, _salary){
    this.Name = _name;
    this.Id = _id;
    this.Salary = _salary;
}

Person.prototype.f_IncreaseSalary = function( _percentage ){
    this.Salary *= _percentage;
}

var per = new Person("cem",10,15000);

1)にアクセスできますper.f_IncreaseSalary(0.2)が、JSON文字列からこのオブジェクトを作成した場合、f_IncreaseSalary関数にアクセスするにはどうすればよいですか?

var sPer = {"Person" : {"Name":"Cem", "Id":10, "Salary":15000} };
sPer.f_IncreaseSalary(0.2); // it won't! 

2)Personクラスの機能を持つsPerオブジェクトを作成するにはどうすればよいですか?

3)機能があることをどのように理解できますか?sPerf_IncreaseSalary

4

3 に答える 3

2

プロトタイプPersonとプロパティを持つJSONオブジェクトPersonは完全に無関係です。new Person(...)JSONオブジェクトとJSONオブジェクトのデータを使用して新しいオブジェクトを明示的に作成する必要があります。

var sPer = {"Person" : {"Name":"Cem", "Id":10, "Salary":15000} };
var per = new Person(sPer.Person.Name, sPer.Person.Id, sPer.Person.Salary);
per.f_IncreaseSalary(0.2);
于 2010-10-14T11:15:18.653 に答える
1

作成しているオブジェクトリテラルはPersonオブジェクトではありません。これは、personオブジェクトと同じプロパティを持つ「Person」プロパティを持つ名前のないオブジェクトです。

var personData = sPer.Person;
var p = new Person( personData.Name, personData.Id, personData.Salary);
p.f_IncreaseSalary(0.2)
于 2010-10-14T11:16:25.680 に答える
1

あなたの質問に答えるには:

JSONはJavascriptObjectNotationの頭字語であり、基本的に、JSON文字列からオブジェクトを作成すると、プロパティを持つオブジェクトが作成されます。

だからあなたの例では、

var sPer = {"Person" : {"Name":"Cem", "Id":10, "Salary":15000} };

Person(宣言した)オブジェクトと同一ではないオブジェクトリテラルを作成しています。あなたsPerは基本的にあなたがこれをすることを可能にします...

//Javascriptで値を変更します;

sPer.Salary = 100000;
sPer.Name = "John";
sPer.Id = 200;

機能はありません:

Person.prototype.f_IncreaseSalary = function( _percentage ){
    this.Salary *= _percentage;
}

JSONで関数を作成することはできません。

お役に立てれば。

于 2010-10-14T11:20:08.773 に答える