2017-07-26 5 views
-1

を説明することができます:私はあなたは、私が今、2ヶ月間Javascriptを学習してきた、と私はそれを理解することはできませんので、私は誰かがこのコードが何を私に説明したいと思い、このコード(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

質問をdownvoteしていませんでしたが、彼らは質問のメリットがここにあると感じるので、正しい方向のナッジがOPによって無視されることになります。 「ノイズの多い」質問に追加するだけで、良い答えを見つけるのが難しくなります。だから私はそれが少し極端であることを確信していません – ochi

答えて

2

これはJavascriptのクラス注釈です。 ES6では構文が少し変わりますが、あなたの例はまだまだ多く使われています。

したがって、基本的にはオブジェクトを記述しており、特別な機能です。これは3つのプロパティでそれを作成します。 x,yおよびaddVectorプロパティもクラスメソッドである。新しいインスタンスを作成するには、そのようにそれを呼び出します(!直接ではない点に)

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)を作成し3つの特性を有するobject

  • x:引数に等しく割り当てられた値x
  • y:に割り当てられた値:引数y
  • addVectorに等しく割り当てられた値それは1つの引数、vをとり、それを使ってxyに新しい値を与える関数です。

構文のこの種のは、あなたがこれを行うことができます。しかし、違いを

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

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

:あなたが他の言語に似た従来のクラス宣言を、使用することができ、上のECMAScript 2015から

var myPoint = new Point(1,2); 
myPoint.addVector(myVector); 

を純粋に構文的です。ブラウザを使って作業していたので、互換性を確保するために前者の方法を採用しました。

0

JavaScript関数はオブジェクトなので、関数をオブジェクトとして渡すことができます。ここでは、匿名関数(wihtout名)をthis.addVectorに割り当てています。ここで、thisはファンクションポイント()を作成するオブジェクトです

関連する問題