1

(对不起,我的英语不好)

我是 JS 新手,目前在对象/方法部分!

我刚刚写了这段代码:

var jason = {
  fname: 'jason',
  lname: 'roy',
  yearBorn: 2001,
  CalcAge: function () {
    this.age = 2020 - this.yearBorn;
  }
};
jason.CalcAge();
console.log(jason.age);

控制台日志的预期结果是 19,这正是我得到的!但这不是我的问题。

我的问题是,为了创建一个年龄属性而经历如此漫长的过程有什么意义?

尽你所能,要打印出“年龄:19”,我们首先需要写:

jason.CalcAge();

接着,

console.log(jason.age);

大家不觉得有点没用吗?

就像,我很确定您可以简单地创建一个年龄属性并在那里编写函数来做与我们在这里所做的相同的事情,但是通过执行一个额外的步骤来调用一个函数,然后控制台记录它生成的属性。

再一次,对不起我的英语不好,如果你们没有得到我,请告诉我!

4

1 回答 1

1

Ciao,一个像你这样的方法的对象:

var jason = {
  fname: 'jason',
  lname: 'roy',
  yearBorn: 2001,
  CalcAge: function () {
    this.age = 2020 - this.yearBorn;
  }
};
jason.CalcAge();
console.log(jason.age);

和对象没有这样的方法:

var jason = {
  fname: 'jason',
  lname: 'roy',
  yearBorn: 2001,
  age: 19
};
console.log(jason.age);

看起来相似但完全不同。为什么?灵活性。让我重写一下你的对象:

var jason = {
   fname: 'jason',
   lname: 'roy',
   yearBorn: 2001,
   CalcAge: function (currYear) {
      this.age = currYear - this.yearBorn;
   }
};
jason.CalcAge(2020);
console.log(jason.age);

如您所见,现在我将当前年份作为 function 的参数传递CalcAge。两种解决方案有什么区别?第一个是静态的(age: 19),明年将不再有效。第二个允许您计算您想要的任何年份的年龄(不仅是当前年份)。因此,您的解决方案(稍作修改)变得更加灵活,可以永远使用。

于 2020-08-02T18:06:19.713 回答