我试过调试但是没有运气! 这个作品:
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);
我知道这会与分号有关,我在搜索其他一些文章但找不到问题的答案
答案 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);
因为函数名称与包含它的实例的变量相同。
如果没有大量清楚解释(这不会让我感到惊讶)让我知道,我会尽量让它变得更有意义。