我应该如何构建我的JavaScript?

时间:2011-04-28 01:28:35

标签: javascript

我在弄清楚我的JavaScript应该如何构建等方面遇到了一些麻烦。 我在PHP,ActionScript 3等语言中的OOP技能是我假设的标准,但JS缺乏这一点,这让我在学习中投入了很多。

我对原型功能有一个模糊的理解,我在AS2中使用了一点 - 我相信这是我能够得到的最接近的功能。目前,我正在编写类似于此的代码:

var slideshow = 
{
    property: value,

    /**
     * This is a method
     */
    myMethod: function()
    {
        // do method things
    }
};

// ------
slideshow.property ++;
slideshow.myMethod();

这一切都运作正常,但是我的能力无效:

var myslideshow1 = new Slideshow();
var myslideshow2 = new Slideshow();

myslideshow1.property = 10;
myslideshow2.property = 16;
  1. 我不确定如何创建我创建的一个“对象”的两个不同实例(在本例中为幻灯片)。
  2. 我找不到任何以有意义的方式解释原型功能的资源。
  3. 任何指针都是supoib。

3 个答案:

答案 0 :(得分:4)

任何javascript函数都可以作为类的构造函数,所以试试这个:

function SlideShow(params) {
    return { 
        property: value,
        myMethod: function() {
            //do method things
        };
    };
};
var slideshow1 = new SlideShow(params);
slideshow1.property = 10;
//etc. 

答案 1 :(得分:2)

我会皱眉apon使用原型向类中添加方法,因为可能存在性能问题

这是您可以使用的示例类结构。 JavaScript类的功能差别不大。

function MyItem(){
  this.d = '';
  this.clear = function( ) {
    this.d = '';
  }
}
var myItem = new MyItem( )
myItem.d = "test";
alert(myItem.d);
myItem.clear();
alert(myItem.d)

Some good reading here

答案 2 :(得分:2)

你应该避免使用new运算符,一切都是公开的。做你想做的事情,拥有私有变量和函数的更好方法是执行以下操作:

var slideshow = function () {
    var self = {};
    var private_param = "hello";
    var private_func = function(say) {
        alert(say);
    };
    var method = function() {
        private_func(private_param);
    };
    var param = 500;

    self.method = method; 
    self.param = param;

    return self; 
    // return object, with the method func and param param publicly accessible
    // private_param and private_func are not accessible to the outside
};

var presentation = slideshow(); // new slideshow, you could edit to pass in init params
presentation.method(); // hello