[整理]在JavaScript中创建静态方法和属性的对象

/**
   * JavaScript开发规范如下:
   * 对象定义首字母大写,第二个及后面的单词的首字母大写。 如:Book
   * 方法定义首字母小写,第二个及后面的单词的首字母大写。如。getName、getBookName
   * 数组类型的变量定义在变量名后紧跟“Arr”字符串。如:functionArr 方法数组
   */
  
  /** 开发JS对象的步骤
   * 第一步:定义构造函数和prototype的方法
   * 第二步:验证构造器和prototype中的方法传递参数的据完整性(已定义、参数类型、字符串个数、数组个数)。
   * 如除了必传参数名其它的参数为空或未定义建议赋于一个默认值
   * 第三步:对内部数据进行保护
   * 
   * 
   * 
   */
  
  // 后面的()表示:代码一载入就立即执行这个函数
  var Book = (function() {
    
    /**
     * Book函数无论被实例化多个对象,静态私有方法和静态私有属性在内存中只存放一份
     */
    // private static attribute
    var numOfBooks = 0;
    // private static method
    function checkIsbn(isbn) {
      if ( isbn === undefined || typeof isbn !== "string") {
        return false;
      }
      
      if ( isbn.length === 0 ) {
        return false;
      }
      
      return true;
    }
    
    // 下面这个是构造函数
    return function( isbn, author, price ) {
      
      var isbn, author, price;
      
      this.setIsbn = function ( isbn ) {
      //if ( !checkIsbn(isbn) ) throw new Error("Boook constructor requires an isbn");
         isbn = isbn;
      }
      this.getIsbn = function () {
        return isbn;
      }
      this.setAuthor = function ( author ) {
        author = author || "";
      }
      this.getAuthor = function () {
        return author;
      }
      this.setPrice = function( price ) {
        price = price || "";
      }
      this.getPrice = function () {
        return price;
      }
      
      numOfBooks++;
      
      this.getNumOfBooks = function() {
        return numOfBooks;
      }
      
      this.setIsbn( isbn );  
      this.setAuthor( author );  
      this.setPrice( price ); 
    }
  })();
  
  // public static method
  Book.convertToTitleCase = function( inputString ) {
    
  }
  
  // public non-privileged methods
  Book.prototype = {
    
    // 
    display : function() {
      alert(this.getIsbn());
    }    
  }
  var book = new Book("a");
  alert(book.getNumOfBooks());
  book = new Book();
  alert(book.getNumOfBooks());

你可能感兴趣的:([整理]在JavaScript中创建静态方法和属性的对象)