我有一个Person构造函数将获取或设置一个人的首,末和全名。更新 - JavaScript的“这个”没有指向正确的对象
var Person = function(firstAndLast) {
var self = this;
this.getFirstName = function(){
var first = self.firstName || (function(){
return firstAndLast.split(' ')[0];
})();
return first;
};
this.getLastName = function(){
var last = self.lastName || (function(){
return firstAndLast.split(' ')[1];
})();
return last;
};
this.getFullName = function(){
var full = self.fullName || (function(){
var first = firstAndLast.split(' ')[0];
var last = firstAndLast.split(' ')[1];
return first + " " + last;
})();
return full;
};
this.setFirstName = function(first){
self.firstName = first;
console.log('first name is now: ' + self.firstName);
};
this.setLastName = function(last){
self.lastName = last;
console.log('last name is now: ' + self.lastName);
};
this.setFullName = function(firstAndLast){
self.fullName = firstAndLast;
console.log('full name is now: ' + self.fullName);
};
};
获取预期方式工作...
var claude = new Person('Claude Shannon');
claude.getFullName();
但是,为什么没有了以下工作?
claude.setFirstName('james');
claude.getFullName(); // "Claude Shannon"
(很显然,我期待“詹姆斯·香农
你正在把'this'和'self'混合在一起。你可能想要简化你的逻辑。 –
@FabianKlötzl对不起,只有在发布后才注意到。我试图解决它,但似乎我仍然没有得到我预期的行为。 –