刚开始学习JS时,我希望有人能解释如何使用全局函数add2来填写合并的AgesPlus2?
function add2(num1, num2) {
return (num1 + num2) + 2;
};
let people = {
age1: 43,
age2: 23,
combinedAgesPlus2: add2(age1, age2)
}
答案 0 :(得分:3)
该函数调用很好,只是该对象仅在声明后之后存在并且不在它们之间,因此您无法访问对象文字内部的general_paired_simpleLM
。您可以在之后进行设置:
age1
在这里阅读
答案 1 :(得分:1)
您可以使用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);
答案 2 :(得分:0)
在对象创建完成之前,您无法访问对象文字的属性。如果要在对象创建期间读取和写入属性,则需要使用构造函数而不是对象文字:
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 );
答案 3 :(得分:0)
您可以使用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)