理解Java Script

时间:2015-12-25 19:51:47

标签: javascript

我试图理解JavaScript中的关键字this,这有点令人困惑。

我看到了两种使用方法,我并不完全清楚。但是,这就是我所理解的,如果它是错的,请纠正我。

  1. 使用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被用作全球的那个中获得了什么,就像你可以将年龄改为你想要的任何东西。

  2. 使用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 ......

1 个答案:

答案 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,可能是开始学习编码的最佳场所!