创建所有原型函数都可访问的局部变量

时间:2012-08-07 22:38:12

标签: javascript 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函数中访问的变量,我该怎么办?

2 个答案:

答案 0 :(得分:5)

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

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

然后访问函数中的属性:

ImgContainer.prototype = {
    init: function() {
        alert(this.current_image);
    },
    scrollLeft: function(){
        //scroll left
    }
}

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

答案 1 :(得分:1)

您无法通过对象外部的原型方法访问对象的私有成员,因为它们超出了范围。你应该这样做:

function ImgContainer() {
    var current_image = 1;
    this.init = function() {
        current_image = 'something_blahblah';
    }
}

var imgContainer = new ImgContainer();
相关问题