了解在 JavaScript 中为对象分配函数

Understanding assignment of functions to an object in javascript

本文关键字:对象 分配 函数 JavaScript 了解      更新时间:2023-09-26

大家好,大家第一次在这里发帖。

所以我试图理解一些东西,我也会在这里发布代码,但如果你想查看源代码,它是这个" 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中面向对象编程的基础知识,而没有语法糖。

更简单地说,他们正在制作一个personperson可以有一组描述他们的属性,以及他们可以做的一组操作。

您在此处创建了名为 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函数。