[整理]创建Javascript门户大开型对象

 /**
   * JavaScript开发规范如下:
   * 对象定义首字母大写,第二个及后面的单词的首字母大写。 如:Book
   * 方法定义首字母小写,第二个及后面的单词的首字母大写。如。getName、getBookName
   * 数组类型的变量定义在变量名后紧跟“Arr”字符串。如:functionArr 方法数组
   */
  
  /** 开发JS对象的步骤
   * 第一步:定义构造函数和prototype的方法
   * 第二步:验证构造器和prototype中的方法传递参数的据完整性(已定义、参数类型、字符串个数、数组个数)。
   * 如除了必传参数名其它的参数为空或未定义建议赋于一个默认值
   * 第三步:对内部数据进行保护
   * 
   * 
   * 
   */
  
  // 下面这个Book对象是门户大开型对象也就是传统的JavaScript创建一个类的方式
  var Book = function( isbn, author, price ) {
    this.setIsbn( isbn );
    this.setAuthor( author );
    this.setPrice( price );
  }
  /**
   * 下面的Book.prototype有二个方法被设为一个对象字面量,优点:这样定义多个方法的时候就不用为每个方法前面加一个Book.prototype了.
   * 
   */
  Book.prototype = {
    checkIsbn : function(isbn) {
      if ( isbn === undefined || typeof isbn !== "string") {
        return false;
      }
      
      if ( isbn.length === 0 ) {
        return false;
      }
      
      return true;
    },
    display : function() {
      
    },
    /**
     * 一个程序员认识到一本书有有多个版本,每个版本都有自己的isbn。他设计了一个用来在不同版本之中选择的算法,并在实例化书籍对象之后直接用它修改其isbn属性.
     * 这时即时对isbn进行了完整性验证,那么 其它程序员对isbn属性的修改也是毫无控制的,为了保护内部数据您 为每个属性提供一个取值器和赋值器
     * 取值器方法的命名:getAttributeName
     * 赋值器方法的命名:setAttributeName
     * 此方法中即时设置了聚会器方法和赋值器方法,但是那些属性还是公开的。能被实例化对象通过.属性访问和修改
     */
    setIsbn : function ( isbn ) {
      if ( !this.checkIsbn(isbn) ) throw new Error("Boook constructor requires an isbn");
       this.isbn = isbn;
    },
    getIsbn : function () {
      return this.isbn;
    },
    setAuthor : function ( author ) {
      this.author = author || "";
    },
    getAuthor : function () {
      return this.author;
    },
    setPrice : function( price ) {
      this.price = price || "";
    },
    getPrice : function () {
      return this.price;
    }
    
  }
  var book = new Book("");

你可能感兴趣的:([整理]创建Javascript门户大开型对象)