我现在从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;
答案 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几乎不应该在生产代码中使用(尽可能争取不变性,当需要突变时,你应该让它为你改变,而不是设置一个值