有人可以解释我应该如何正确调用这个函数吗?



刚开始学习JS,我希望有人能解释如何使用全局函数add2来填充组合的AgesPlus2?

function add2(num1, num2) {
return (num1 + num2) + 2;
};
let people = {
age1: 43,
age2: 23,
combinedAgesPlus2: add2(age1, age2)
}

函数调用很好,只是对象仅在声明存在,而不是介于两者之间,因此您无法访问对象文字中的age1。之后可以设置:

let people = { 
age1: 43,
age2: 23,
};
people.combinedAgesPlus2 = add2(people.age1, people.age2);

请继续阅读:

对象文本声明中的自引用

您可以使用getter

function add2(num1, num2) {
return (num1 + num2) + 2;
};
let people = {
age1: 43,
age2: 23,
get combinedAgesPlus2() {
return add2(this.age1, this.age2);
}
}
console.log(people.combinedAgesPlus2);

正如 paulpro 在下面的评论中提到的,这将在您每次访问属性时计算值,而不是在实例化时计算值。

这样做的好处是,您的值将始终是最新的,尽管它引用的属性进行了更新:

function add2(num1, num2) {
return (num1 + num2) + 2;
};
let people = {
age1: 43,
age2: 23,
get combinedAgesPlus2() {
return add2(this.age1, this.age2);
}
}
//DEMO
console.log("combinedAgesPlus2: ", people.combinedAgesPlus2);
people.age1 = 10;
console.log("age1 changed to 10");
console.log("combinedAgesPlus2: ", people.combinedAgesPlus2);

在对象创建完成之前,无法访问对象文本的属性。如果要在对象创建期间读取和写入属性,则需要使用构造函数而不是对象文本:

function add2( num1, num2 ) {
return num1 + num2 + 2;
}

let people = new function ( ) {
this.age1 = 43;
this.age2 = 23;
this.combinedAgesPlus2 = add2( this.age1, this.age2 );
};
console.log( people );

您可以使用getters

function add2(num1, num2) {
return (num1 + num2) + 2;
};
let people = {
age1: 43,
age2: 23,
get combinedAgesPlus2() { return add2(this.age1, this.age2) } 
}
console.log(people.combinedAgesPlus2)

最新更新