1

我试过调试,但还没有运气!这有效:

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);

这不起作用:

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

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

我知道这与分号有关,我搜索了其他一些关于此的文章,但找不到我的问题的答案

4

2 回答 2

2

很难从您的代码中知道问题,但我认为这一行可能会导致它

var slider = new slider('backward');

您同时声明slider为函数和变量。那就是如果我的猜测是正确的。这是因为它是第一个代码和第二个代码之间的唯一区别

于 2012-10-12T22:23:29.003 回答
1

当你跑

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

您现在有 2 个变量被调用slider- 一个是函数,一个是函数生成的对象的实例。当您要求第二个滑块生成时:

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

你实际上是在要求它使用对象的实例作为变量......这感觉真的很笨拙,因为它们具有相同的名称。

您在第二个示例中所做的导致它失败的操作与在第一个示例中尝试执行此操作相同:

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

因为函数名称与包含它的实例的变量相同。

如果这还没有被大量解释清楚(这不会让我感到惊讶)让我知道,我会尽量让它更有意义。

于 2012-10-12T22:24:34.543 回答