3

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

function ImgContainer() {
    var current_image = 1;
}

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

var imgContainer = new ImgContainer();

我假设我可以在 init 和 scrollLeft 中访问 c​​urrent_image,但是我得到了 Uncaught ReferenceError: current_image is not defined。

我应该怎么做才能有一个在 init 和 scrollLeft 函数中都可以访问的变量?

4

2 回答 2

5

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

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

然后访问函数中的属性:

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

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

于 2012-08-07T22:40:46.463 回答
1

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

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

var imgContainer = new ImgContainer();
于 2012-08-07T22:42:48.360 回答