无法理解JavaScript中的对象方法

时间:2017-03-17 09:14:54

标签: 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 = 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;

2 个答案:

答案 0 :(得分:1)

为了让行Fri 17 Mar 08:55:13 GMT 2017有效,您需要在susan.setAge(35);对象中使用setAge()函数吗?

susan

如果你仔细观察,你就宣布了这个功能

susan.setAge = setAge;

现在您将该功能设置为具有相同名称 // Change Age Function var setAge = function (newAge) { this.age = newAge; };

的对象susan

<强>更新

susan.setAge

一样
susan.setAge = setAge;

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

答案 1 :(得分:0)

一般来说,记住 - 设置者会让你的对象变得可变,这是一个坏主意。吸气剂违反&#34;告诉对象该做什么,不要求它提供信息并自己操纵它&#34;。因此,一般情况下,默认情况下不要添加setter和getter。您经常需要它们,但在添加之前应始终找到真正的需求。特别是setter几乎不应该在生产代码中使用(尽可能争取不变性,当需要突变时,你应该让它为你改变,而不是设置一个值