大家好,第一次来这里。

因此,我试图理解一些内容,我也会在此处发布代码,但是如果您想查看源代码,则此代码为“ https://www.codecademy.com/en/courses/spencer-sandbox/2/5?curriculum_id=506324b3a7dffd00020bf661

这是代码学院的练习。

所以有bob.setAge = setAge;,为什么没有把它设为bob.setAge= newAge;
这是代码。

var setAge = function (newAge) {
  this.age = newAge;
};
// now we make bob
var bob = new Object();
bob.age = 30;
bob.setAge = setAge;

// make susan here, and first give her an age of 25
var susan = new Object();
susan.age=25;
susan.setAge = setAge;


// here, update Susan's age to 35 using the method

susan.setAge(35);

最佳答案

我相信本练习将尝试教您没有语法糖的JavaScript面向对象编程的基础。

简而言之,他们正在创建person,并且person可以具有描述它们的一组属性以及它们可以执行的一组操作。

您已经在此处创建了名为setAge的函数

var setAge = function (newAge) {
  this.age = newAge;
};


它将this的年龄设置为newAge。但是这里的问题是什么是this?答案取决于它,这就是为什么您可以重用此功能的原因。

因此,当您“制作鲍勃”

// now we make bob
var bob = new Object();
bob.age = 30;
bob.setAge = setAge;


您正在说的是bob有一个可以执行的动作,称为setAge,该动作等效于我们前面定义的称为setAge的功能。同样在此上下文中,this是指bob

因此,当您执行类似bob.setAge(20)的操作时,以bob.age表示的this.age将从30更改为20

那有意义吗?

同样在您的链接中有此报价


  大!现在我们可以利用以下事实:setAge方法不限于单个对象bob


无论是bob还是susan,如果将其分配给对象,则始终可以使用与上面定义的相同的setAge函数。

10-05 23:01