我正在尝试使用原型(prototype)向对象添加功能,我以为我理解了整个概念,所以这就是我所做的:

function ImgContainer() {
    var current_image = 1;
}

ImgContainer.prototype = {
    init: function() {
        //initialize
    },
    scrollLeft: function(){
        //scroll left
    }
}

var imgContainer = new ImgContainer();

我假设我可以在init和scrollLeft中都访问current_image,但是我遇到了Uncaught ReferenceError:未定义current_image的问题。

如何使变量在init和scrollLeft函数中都可以访问?

最佳答案

您可以将其添加为实例化对象的属性:

function ImgContainer() {
    this.current_image = 1;
}

然后在函数中访问属性:
ImgContainer.prototype = {
    init: function() {
        alert(this.current_image);
    },
    scrollLeft: function(){
        //scroll left
    }
}

您仍然可以在方法内部使用短期变量来临时存储内容,以完成该方法的工作。但是,您将对象的状态存储在其属性中。

09-25 15:09