如何将函数绑定到JSON对象?

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
功能?     
已邀请:
您的
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);
    
您正在创建的对象文字不是Person对象。它是一个未命名的对象,其属性为“Person”,其属性与您的person对象相同。
var personData = sPer.Person;
var p = new Person( personData.Name, personData.Id, personData.Salary);
p.f_IncreaseSalary(0.2)
    
回答你的问题: 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中创建函数。 希望这可以帮助。     

要回复问题请先登录注册