无法理解JavaScript中的对象方法

无法理解JavaScript中的对象方法,javascript,object,Javascript,Object,我正在从Codecademy学习JS现在我在对象方法部分在这一部分我们被要求更改Susan的年龄 这是代码 // Change Age Function var setAge = function (newAge) { this.age = newAge; }; // New Object Bob. var bob = new Object(); bob.age = 30; // New Object Susan. var susan = new Object(); susan.age

我正在从Codecademy学习JS现在我在对象方法部分在这一部分我们被要求更改Susan的年龄
这是代码

 // Change Age Function
var setAge = function (newAge) {
  this.age = newAge;
};
// New Object Bob.
var bob = new Object();
bob.age = 30;

// New Object Susan.
var susan = new Object();
susan.age = 25;

// Changing Susan Age.
susan.setAge = setAge;
susan.setAge(35);

console.log(susan.age); // Output is 35.
那么现在我的问题是这是怎么做的:

susan.setAge = setAge;
为什么我不能简单地写呢

susan.setAge(35);
这里还有一个代码,在这个代码中,我们必须更改矩形的高度和宽度

//declaring new object rectangle
var rectangle = new Object();
rectangle.height = 3;
rectangle.width = 4;

// change height function
rectangle.setHeight = function (newHeight) {
  this.height = newHeight;
};

// Change width function
rectangle.setWidth = function(newWidth){
    this.width = newWidth ; 
}

// changing Height and Width
rectangle.setHeight(6);
rectangle.setWidth(8);

console.log(rectangle.height + " " + rectangle.width); //output is 6  8
在上面的代码中,即使我没有编写代码,我也能够毫无错误地得到答案

rectangle.setHeight = setHeight;         
rectangle.setWidth = setWidth;

为了使行
susan.setAge(35)工作,您需要
setAge()
函数中的
susan
对象对吗

susan.setAge = setAge;
如果仔细观察顶部,则声明了函数

 // Change Age Function
var setAge = function (newAge) {
  this.age = newAge;
};
现在,您可以将该函数设置为具有相同名称的对象
susan

更新:

susan.setAge = setAge;

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

这就是原因,在您的另一个示例中,您不需要编写该行,因为您直接分配函数,如更新中所示。

一般来说,请记住--setter使对象可变,这是一个坏主意。getters违反了“告诉一个对象该做什么,不要向它索取信息并自己操纵它”。所以一般来说,默认情况下不要添加setter和getter。你经常需要它们,但在添加它们之前,你应该找到真正的需要。特别是setter几乎不应该在生产代码中使用(尽可能争取不变性,当需要变异时,你应该让它为你变异,而不是设置一个值

,但在我的另一个例子中,我不必输入'rectangle.setHeight=setHeight';'rectangle.setWidth=setWidth';@AyushKatoch更新了答案。你所做的一切就是将函数分配给一个变量,以后再使用它。i在第二种情况下,您直接分配得到了,谢谢。