使用函数将值设置为对象(java脚本)

时间:2016-03-06 11:14:04

标签: javascript object

当我使用getFullName时,getFirstName和getLastName工作正常,但我不能使用set函数setFullName,setLastName,setFirstName。我的代码:

var Person = function(firstAndLast) {
    var fn=firstAndLast.split(' ');
    var fstr=fn.join(' ');
    var frn=fn[0];
    var lsn=fn[1];

    this.getFullName=function(){return fstr;};
    this.getFirstName=function(){return frn;};
    this.getLastName=function(){return lsn;};
    this.setFirstName=function(a){fn[0]=a;};
    this.setLastName=function(b){fn[1]=b;};
    this.setFullName=function(c){fn=c.split(' ');};

};

1 个答案:

答案 0 :(得分:1)

这个怎么样:

var Person = function(firstAndLast) {
    var self = this;
    this.fn = firstAndLast.split(' ');
    this.frn = this.fn[0];
    this.lsn = this.fn[1];

    this.getFullName=function(){return self.fn.join(' ');};
    this.getFirstName=function(){return self.frn;};
    this.getLastName=function(){return self.lsn;};
    this.setFirstName=function(a){self.frn=a; self.fn[0]=a;};
    this.setLastName=function(b){self.lsn=b; self.fn[1]=b;};
    this.setFullName=function(c){
        self.fn = c.split(' '); 
        self.frn = this.fn[0];
        self.lsn = this.fn[1];};
};

请参阅this fiddle

如果您有很多Person个对象,则应考虑将getter / setter函数移至class prototype

var Person = function(firstAndLast) {
    this.fn = firstAndLast.split(' ');
    this.frn = this.fn[0];
    this.lsn = this.fn[1];
};

Person.prototype.getFullName = function() {
    return this.fn.join(' ');
}

Person.prototype.getFirstName = function() {
    return this.lsn;
}

Person.prototype.getLastName = function() {
    return this.lsn;
}

Person.prototype.setFirstName = function(a) {
    this.frn=a; 
  this.fn[0]=a;
}

Person.prototype.setLastName = function(b) {
    this.lsn=b;
  this.fn[1]=b;
}

Person.prototype.setFullName = function(c) {
  this.fn = c.split(' '); 
  this.frn = this.fn[0];
  this.lsn = this.fn[1];
}

请参阅updated fiddle