[整理]创建JavaScript对象用闭包的方式保证内部数据不能外部所访问

  /**
   * JavaScript开发规范如下:
   * 对象定义首字母大写,第二个及后面的单词的首字母大写。 如:Book
   * 方法定义首字母小写,第二个及后面的单词的首字母大写。如。getName、getBookName
   * 数组类型的变量定义在变量名后紧跟“Arr”字符串。如:functionArr 方法数组
   */
  
  /** 开发JS对象的步骤
   * 第一步:定义构造函数和prototype的方法
   * 第二步:验证构造器和prototype中的方法传递参数的据完整性(已定义、参数类型、字符串个数、数组个数)。
   * 如除了必传参数名其它的参数为空或未定义建议赋于一个默认值
   * 第三步:对内部数据进行保护
   * 
   * 
   * 
   */
  
  // 下面这个Book对象是门户大开型对象也就是传统的JavaScript创建一个类的方式
  var Book = function( isbn, author, price ) {
    
    var isbn, author, price;
    
    function checkIsbn(isbn) {
      if ( isbn === undefined || typeof isbn !== "string") {
        return false;
      }
      
      if ( isbn.length === 0 ) {
        return false;
      }
      
      return true;
    }
    /**
     * 需要访问这些变量和函数的方法需声明在Book中即可,这些方法被称为特权方法,因为他们是公用方法,但却能方法私有属性和方法。
     * 任何不需要直接访问私有属性的方法都可以在Book.prototype中声明.如display方法;
     */
    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;
    }
    
    this.setIsbn( isbn );  
    this.setAuthor( author );  
    this.setPrice( price ); 
  }
  /**
   * 下面的Book.prototype有二个方法被设为一个对象字面量,优点:这样定义多个方法的时候就不用为每个方法前面加一个Book.prototype了.
   * 
   */
  Book.prototype = {
    
    // 
    display : function() {
      
    }    
  }
  var book = new Book("");

你可能感兴趣的:([整理]创建JavaScript对象用闭包的方式保证内部数据不能外部所访问)