1

I tried debugging but no luck as of yet! This Works:

function slider(direction){
this.direction = direction;
}

slider.prototype.move = function(){
console.log('moving');
};

var slider1 = new slider('backward');
console.log(slider1.direction);

var slider2 = new slider('forward');
console.log(slider2.direction);

This doesn't work:

var slider = new slider('backward');
console.log(slider.direction);

var slider2 = new slider('forward');
console.log(slider2.direction);

I know this would have something to do with the semicolon and I'd searched some other articles on this but couldn't find an answer to my problem

4

2 に答える 2

2

コードから問題を知るのは難しいですが、この行が原因である可能性があると思います

var slider = new slider('backward');

slider関数と変数を同時に宣言しました。それは私の推測が正しい場合です。これは、最初のコードと 2 番目のコードの唯一の違いであるためです。

于 2012-10-12T22:23:29.003 に答える
1

走るとき

var slider = new slider('backward');
console.log(slider.direction);

これで、2 つの変数が呼び出されsliderました。1 つは関数で、もう 1 つは関数が生成するオブジェクトのインスタンスです。2 番目のスライダーに生成を依頼すると、次のようになります。

var slider2 = new slider('forward');
console.log(slider2.direction);

実際には、オブジェクトのインスタンスを変数として使用するように求めています...これは、同じ名前を持っているため、説明するのが非常に面倒です。

失敗する原因となる 2 番目の例で行っていることは、最初の例でこれを実行しようとしているのと同じです。

var slider2 = new slider1('forward');
console.log(slider2.direction);

関数名は、そのインスタンスを含む変数と同じであるためです。

これが大規模に明確に説明されていない場合 (これは驚くことではありません)、私に知らせてください。

于 2012-10-12T22:24:34.543 に答える