无法理解JavaScript中的对象方法
我正在从Codecademy学习JS现在我在对象方法部分在这一部分我们被要求更改Susan的年龄无法理解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
这是代码
// 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在第二种情况下,您直接分配得到了,谢谢。