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

来源:互联网 发布:阿里云是邮箱吗 编辑:程序博客网 时间:2024/06/05 10:18
  /**   * 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("");

0 0
原创粉丝点击