2016-03-06 43 views
0

當我使用getFullName時,getFirstName和getLastName工作正常,但我無法使用set函數setFullName,setLastName,setFirstName。我的代碼:將值設置爲帶有函數的對象(java腳本)

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(' ');}; 

}; 
+0

您正在設置fn [0]而不是'frn' – Bergi

回答

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

+0

Tnx人,這是有幫助的 –

+0

不客氣!如果它幫助你解決你的問題,請將答案標記爲已接受:) – cl3m

相關問題