2017-07-26 35 views
-1

我一直在學習JavaScript 2個月,現在,我希望有人來解釋我這個代碼做什麼,因爲我無法理解這一點:你能解釋一下這個代碼(JavaScript)的

function Point(x, y){ 
this.x = x; 
this.y = y; 

this.addVector = function(v){ 
    this.x += v.x; 
    this.y += v.y; 
}; 

我知道function Point(x,y)創建一個名稱爲的功能點其中有2個參數,但我不明白this.addVector = function

+1

這不是最好的例子。 – tadman

+0

對於這類問題的錯誤渠道,但從未減少倒票似乎有點極端。在正確的方向上溫和地推動可以解決問題。 –

+0

並沒有降低問題的質量,但是你會驚訝地發現,正確方向的許多移動會被OP忽略,因爲他們覺得他們的問題值得在這裏。它只會增加'嘈雜'的問題,並且很難找到很好的答案。所以我不太確定它有點極端 – ochi

回答

2

這是Javascript中的類註釋。 ES6中的語法稍微有些變化,但您的示例仍然使用了很多。

所以它基本上描述了一個對象,並且是一種特殊的功能。它創建了3個屬性。 x,yaddVector財產這也是一個類的方法。要建立你怎麼稱呼它,像這樣一個新的實例:

var p = new Point(0, 0); 
var v = new Point(10, 10); 

然後你就可以撥打paddVector(不是直接點!)

p.addVector(v); 
console.log(p.x, p.y); // We can access its properties like so 

也期待在這個小解釋here

5

功能Point(x, y)創建object與3個屬性:

  • x:分配的值等於參數x
  • y:分配的值等於參數y
  • addVector:分配給值它是一個函數,它接受一個參數v並使用它給出xy的新值。

這種語法允許你這樣做:

var myPoint = new Point(1,2); 
myPoint.addVector(myVector); 
從ECMAScript的2015年,您可以使用傳統的類聲明,類似於其他語言

class Point { 
    constructor(x, y) { 
     this.x = x; 
     this.y = y; 
    } 

    addVector(v) { 
     this.x = v.x; 
     this.y = v.y; 
    } 
} 

但是區別純粹是句法。使用瀏覽器,我會堅持前一種方法,以確保兼容性。

0

在JavaScript函數中是對象,因此您可以將任何函數作爲對象傳遞。這裏你正在做的是給this.addVector指定一個匿名函數(沒有名字),其中this是創建函數point()的對象()

相關問題