Javascript 以iLife为方法实时构造对象

Javascript 以iLife为方法实时构造对象,javascript,object,iife,Javascript,Object,Iife,当我想打印属性时,我不能访问变量 我有一个目标: let human = { birdYear: 1, getAge: (function (birdYear) { return 2021 - this.birdYear })() }; 当打印人员收到此信息时: Cannot read property 'birdYear' of birdYear { birdYear: 1 getAge: 2020 } 我想得到这个: Cannot read property

当我想打印属性时,我不能访问变量 我有一个目标:

let human = {
  birdYear: 1,
  getAge: (function (birdYear) {
    return 2021 - this.birdYear
  })()
};
当打印人员收到此信息时:

Cannot read property 'birdYear' of birdYear
{
  birdYear: 1
  getAge: 2020
}
我想得到这个:

Cannot read property 'birdYear' of birdYear
{
  birdYear: 1
  getAge: 2020
}
有人帮我吗?我使用:

  • “这个。”
  • 没有“这个,伯代尔”
  • (fn(birdYear){…birdYear})()
  • (fn(birdYear){…birdYear})(this.birdYear)
什么也没有

谢谢

//加

我是这样发现的

let human = {
  birdYear: 1,
  get getAge() {
    return new Date().getFullYear() - this.birdYear
  }
};
工作!
我只需要理解为什么我不使用IIFE作为方法…

您不想创建一个可以使用内置访问器(即
get
)方法实例化和序列化的类吗

类动物{
建造师(年龄){
这个。年龄=年龄;
}
获得生日(){
返回新日期().getUTCFullYear()-this.age;
}
序列化(){
返回{age:this.age,birthYear:this.birthYear};
}
}
让鸟=新动物(1);

log(bird.serialize())
指的是您的函数,而不是它所属的对象,因为该对象是对象文字,而不是类实例。