了解javascript中对象的函数赋值

时间:2015-12-25 18:09:25

标签: javascript

大家第一次在这里发帖。

所以我试图理解一些东西,我也会在这里发布代码,但是如果你想查看源代码,那么这就是" https://www.codecademy.com/en/courses/spencer-sandbox/2/5?curriculum_id=506324b3a7dffd00020bf661"

这是来自codeacademy的练习......

所以有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);

1 个答案:

答案 0 :(得分:1)

我相信这个练习试图在没有语法糖的情况下教你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函数。