我试图理解JavaScript中的关键字this
,这有点令人困惑。
我看到了两种使用方法,我并不完全清楚。但是,这就是我所理解的,如果它是错的,请纠正我。
使用this
的第一种方式:
var setAge = function (newAge) {
this.age = newAge;
};
// now we make bob
var bob = new Object();
bob.age = 30;
// and down here we just use the method we already made
bob.setAge = setAge;
// change bob's age to 50 here
bob.setAge(50);
我从this
被用作全球的那个中获得了什么,就像你可以将年龄改为你想要的任何东西。
使用this
的第二种方式:
var square = new Object();
square.sideLength = 6;
square.calcPerimeter = function() {
return this.sideLength * 4;
};
// help us define an area method here
square.calcArea = function() {
return this.sideLength * this.sideLength
};
var p = square.calcPerimeter();
var a = square.calcArea();
我不确定这个,请向我解释......因为我的大脑正试图理解this
......
答案 0 :(得分:0)
让我告诉你两个代码中发生了什么:
首先:
var setAge = function (newAge) {
this.age = newAge;
};
// now we make bob
var bob = new Object();
bob.age = 30;
// and down here we just use the method we already made
bob.setAge = setAge;
// change bob's age to 50 here
bob.setAge(50);
基本上this.age = newAge正在做的是当他说Bob.setAge时,你可以改变Object的实际年龄。它就像一个二传手。 Getter和Setters更详细解释here:
第二代码:
var square = new Object();
square.sideLength = 6;
square.calcPerimeter = function() {
return this.sideLength * 4;
};
// help us define an area method here
square.calcArea = function() {
return this.sideLength * this.sideLength
};
var p = square.calcPerimeter();
var a = square.calcArea();
这里当它返回this.sideLength时,它获得该Object中定义的square的sideLength。你只是说sideLength,因为它不是一个全局变量。这将得到更彻底的解释here
好工作继续使用Codecademy,可能是开始学习编码的最佳场所!