jQuery错误 - 未捕获TypeError:对象不是函数

时间:2012-10-12 22:17:15

标签: javascript jquery

我试过调试但是没有运气! 这个作品:

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

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

2 个答案:

答案 0 :(得分:2)

很难从代码中了解问题,但我认为这一行可能会导致问题

var slider = new slider('backward');

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

答案 1 :(得分:1)

运行时

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

现在有两个名为slider的变量 - 一个是函数,一个是函数生成的对象的实例。当您要求第二个滑块生成:

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

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

你在第二个例子中做的是什么导致它失败,就像在第一个例子中尝试这样做一样:

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

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

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