1
オブジェクトは、私はそのようなエッジのオブジェクトを持っている必要があります。Javascriptのコンストラクタと
var a=new Array();
a[0]=0+move; a[1]=200;
a[2]=0+move; a[3]=130;
var ed=new edge(a,"a");
オブジェクトは、私はそのようなエッジのオブジェクトを持っている必要があります。Javascriptのコンストラクタと
var a=new Array();
a[0]=0+move; a[1]=200;
a[2]=0+move; a[3]=130;
var ed=new edge(a,"a");
同じスコープ内に、edge
という名前の識別子を1つだけ持つことができます。それが起こると、前のものを上書きするために割り当てられた最後のものが発生します。ホイストのために、関数の宣言が最初に処理されています(コード内で2番目に表示されていますが)がオブジェクトを上書きしています。したがって、コンストラクタとしてedge
を使用しようとする行に到達すると、そのオブジェクトはすでにオブジェクトによって上書きされています。ホイストについての詳細はhereを参照してください。
function edge(coordinates, name){
this.coordinates = coordinates;
this.name = name;
}
var move = 100; // dummy variable just to make your code work
// Array literal notation. Simpler than making new array and populating
// indexes separately
var a = [0 + move, 200, 0 + move, 130 ];
// Use function as constructor
var e1 = new edge(a, "a");
console.log(e1);
あなたは 'edge'という名前の2つの異なるものを持ってしようとしています。コンストラクタが必要な場合は、オブジェクトを削除します。 'function edge ...' ** not ** 'var edge = {...' –
'object'と' function'に同じ名前を使うべきではありません。名前を変更しようとするとうまくいきます。 – optimistanoop
...同じ名前のオブジェクトが同じ名前付き関数に勝つのは、関数の宣言がファイルの先頭にぶら下がるからです。 – nem035