javascript设计模式4

静态成员是直接通过类对象访问的

var Book=(function(){

    var numOfBooks=0;

    function checkIsbn(isbn){

        ...

    }

    return function(newIsbn,newTitle,newAuthor){

        var isbn,title,author;

        this.getIsbn=function(){

            return isbn;

        };

        this.setIsbn=function(newIsbn){

            if(!checkIsbn(newIsbn)) throw new Error('ISBN不合法');

            isbn=newIsbn;

        };

        this.getTitle=function(){

            return title;

        };

        this.setTitle=function(newTitle){

            title=newTitle||'无标题';

        };

        this.getAuthor=function(){

            return author;

        };

        this.setAuthor=function(newAuthor){

            author=newAuthor||'无作者';

        };

        numOfBooks++;

        if(numOfBooks>50) throw new Error('只能创建50个实例');

        this.setIsbn(newIsbn);

        this.setTitle(newTitle);

        this.setAuthor(newAuthor);



    }

})();

Book.convertToTitleCase=function(inputString){

    ...

};

Book.prototype={

    display:function(){

        ...

    }

};

 静态特权方法(模仿常量)

//Class.getUPPER_BOUND();

var Class=(function(){

    var UPPER_BOUND=100;

    var ctor=function(constructorArgument){

        ...

    };

    ctor.getUPPER_BOUND=function(){

        return UPPER_BOUND;

    };

    ...

    return ctor;

})();

通用的取值器方法

//Class.getConstant('UPPER_BOUND');

var Class=(function(){

    var constants={

        UPPER_BOUND:100,

        LOWER_BOUND:-100

    };

    var ctor=function(constructorArgument){

        ...

    };

    ctor.getConstant=function(name){

        return constants[name];

    };

    ...

    return ctor;

})();

原型链

function Author(name,books){

    Person.call(this,name);

    this.books=books;

}

Author.prototype=new Person();

Author.prototype.constructor=Author;

Author.prototype.getBooks = function() {

    return this.books;

};

 

你可能感兴趣的:(JavaScript)