我创建了一个'Person'构造函数:
function Person(firstName, secondName) {
'use strict';
this.firstName = firstName;
this.secondName = secondName;
this.fullName = this.firstName + ' ' + this.secondName;
}
,然后我创建了一个实例:
var person1 = new Person('David', 'Johns');
现在person1.fullName
的值为David Johns
我尝试将person1.firstName
的值修改为George
我预计person1.fullName
的值会更改为George Johns
,但它没有改变!
那么如何创建一个属性依赖于其他属性的对象呢? 或者其值取决于其他变量的变量?
答案 0 :(得分:2)
你应该使用一个使用所有更新的变量值的getter,比如
function Person(firstName, secondName) {
'use strict';
this.firstName = firstName;
this.secondName = secondName;
this.getFullName = () => this.firstName + ' ' + this.secondName;
}
let p = new Person('Hello', 'World');
console.log(p.getFullName());
p.firstName = 'Hi';
console.log(p.getFullName());

答案 1 :(得分:0)
那是因为它被分配了你应该尝试的是制作一个使用类似方法返回当前的getter的getter。
function getFullName() {
return this.firstName + ' ' + this.secondName;
}
答案 2 :(得分:0)
对于此类实例,您可以使用与属性不同的方法。将所有依赖属性视为方法。 对于你的问题,它将是,
function Person(firstName, secondName) {
'use strict';
this.firstName = firstName;
this.secondName = secondName;
this.getFullName = function(){return this.firstName + ' ' + this.secondName};
}