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)我如何理解sPer
有f_IncreaseSalary
功能?
答案 0 :(得分:2)
您的Person
原型和具有属性Person
的JSON对象完全不相关。您需要使用new Person(...)
显式创建一个新对象,并使用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);
答案 1 :(得分:1)
您正在创建的对象文字是不一个Person对象。它是一个未命名的对象,其属性为“Person”,其属性与您的person对象相同。
var personData = sPer.Person;
var p = new Person( personData.Name, personData.Id, personData.Salary);
p.f_IncreaseSalary(0.2)
答案 2 :(得分:1)
回答你的问题:
JSON是Javascript Object Notation的首字母缩写,基本上,一旦从JSON String创建对象,就会有一个具有属性的对象。
所以对你的例子来说,
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中创建函数。
希望这有帮助。