开发者

How should I look at structuring my JavaScript?

I'm having a little trouble working out how my JavaScript should be structured, etc.. My OOP skills in languages such as PHP, ActionScript 3 and so on are what I'm assuming to be on-par, but JS is lacking this which has thrown me off quite a bit in my learning.

I have a vague understanding of the prototype feature which I used a little in AS2 - I believe this is the closest I'll be able to get. At the moment, I'm laying out my code similar to this:

var slideshow = 
{
    property: value,

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

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

This all works okay, but it's void my ability to do something like:

var myslideshow1 = new Slidesh开发者_运维百科ow();
var myslideshow2 = new Slideshow();

myslideshow1.property = 10;
myslideshow2.property = 16;
  1. I'm not sure on how to go about creating two different instances of one "object" I've created (in this case, slideshow).
  2. I can't find any resources that explain the prototype feature in a way that makes sense.

Any pointers would be supoib.


Any javascript function can act as a constructor for a class, so try this:

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


I would frown apon using prototype to add methods to a class as there could be performance issues

Here is a sample class structure you could use. JavaScript classes are not much different the functions.

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


You should avoid using the new operator, everything is public. A better way to do what you want to do, and have private variables and functions is to do the following:

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
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜