2015-12-25 74 views
1

我想了解JavaScript中的關鍵詞this,這有點令人困惑。在Java腳本中瞭解「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感...

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this – SLaks

+0

http://www.quirksmode.org/js/this.html – Pabs123

+1

'obj.method(參數)'和'obj.method.call(obj,argument)'做同樣的事情。該對象本身作爲特殊的'this'參數傳遞給函數。你也可以把'this'稱爲函數的第零個參數。一個對象可以被想象成一個有一些條目的字典。例如,這樣的條目可以是函數或數字或其他值。 – SpiderPig

回答

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時,你可以改變對象的實際年齡。它像一個二傳手。 getter和setter更解釋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,它越來越受到該對象定義的廣場sideLength。你只能說sideLength,因爲它不是一個全局變量。這是更徹底的解釋here

好作業繼續使用Codecademy,可能是開始學習編碼的最佳場所!