zoukankan      html  css  js  c++  java
  • js深入研究之初始化验证

    <script type="text/javascript">
    var Book = function(isbn, title, author) {
      if(!this.checkIsbn(isbn)){
          throw new Error('Book: Invalid ISBN.');
      } 
      this.isbn = isbn;
      this.title = title || 'No title specified';
      this.author = author || 'No author specified';
    }
    
    Book.prototype = {
      checkIsbn: function(isbn) {
        if(isbn == undefined || typeof isbn != 'string') {
          return false;
        }
        return true; // All tests passed.
      },
      display: function() {
        alert("isbn:"+this.isbn+" title:"+this.title+" author:"+this.author);
      }
    };
    
    var theHobbit = new Book('0-395-07122-4', 'The Hobbit', 'J. R. R. Tolkein');
    theHobbit.display(); // Outputs the data by creating and populating an HTML element.
    
    </script>

    对isbn进行验证。是否定义,是否为字符串等等。对title进行判断,设置默认。

    另一种实现方式

    <script type="text/javascript">
    /* 出版 interface. */
    /* var Publication = new Interface('Publication', ['getIsbn', 'setIsbn', 'getTitle',
      'setTitle', 'getAuthor', 'setAuthor', 'display']); */
    
    var Book = function(isbn, title, author) { // implements Publication
      this.setIsbn(isbn);
      this.setTitle(title);
      this.setAuthor(author);
    }
    
    Book.prototype = {
      checkIsbn: function(isbn) {
        if(isbn == undefined || typeof isbn != 'string') {
          return false;
        }
        return true; // All tests passed.
      },
      getIsbn: function() {
        return this.isbn;
      },
      setIsbn: function(isbn) {
        if(!this.checkIsbn(isbn)) throw new Error('Book: Invalid ISBN.');
        this.isbn = isbn;
      },
    
      getTitle: function() {
        return this.title;
      },
      setTitle: function(title) {
        this.title = title || 'No title specified';
      },
    
      getAuthor: function() {
        return this.author;
      },
      setAuthor: function(author) {
        this.author = author || 'No author specified';
      },
    
      display: function() {
        alert("isbn:"+this.isbn+" title:"+this.title+" author:"+this.author);
      }
    };
    
    
    var theHobbit = new Book('0-395-07122-4', '', 'J. R. R. Tolkein');
    theHobbit.display(); // Outputs the data by creating and populating an HTML element.
    
    </script>

    接口实现,参考接口,定义了好多方法。

    内部方法命名加_,例如这个检测的方法 _checkIsbn

    <script type="text/javascript">
    /* 出版 interface. */
    /* var Publication = new Interface('Publication', ['getIsbn', 'setIsbn', 'getTitle',
      'setTitle', 'getAuthor', 'setAuthor', 'display']); */
    
    var Book = function(isbn, title, author) { // implements Publication
      this.setIsbn(isbn);
      this.setTitle(title);
      this.setAuthor(author);
    }
    
    Book.prototype = {
      _checkIsbn: function(isbn) {
        if(isbn == undefined || typeof isbn != 'string') {
          return false;
        }
        return true; // All tests passed.
      },
      getIsbn: function() {
        return this.isbn;
      },
      setIsbn: function(isbn) {
        if(!this._checkIsbn(isbn)) throw new Error('Book: Invalid ISBN.');
        this.isbn = isbn;
      },
    
      getTitle: function() {
        return this.title;
      },
      setTitle: function(title) {
        this.title = title || 'No title specified';
      },
    
      getAuthor: function() {
        return this.author;
      },
      setAuthor: function(author) {
        this.author = author || 'No author specified';
      },
    
      display: function() {
        alert("isbn:"+this.isbn+" title:"+this.title+" author:"+this.author);
      }
    };
    
    
    //var theHobbit = new Book(123, '', 'J. R. R. Tolkein'); // 非字符串抛出异常
    var theHobbit = new Book('1990-78sd-1092', '', 'J. R. R. Tolkein'); 
    theHobbit.display(); // Outputs the data by creating and populating an HTML element.
    
    
    </script>
  • 相关阅读:
    JS动态计算rem
    Vue数据双向绑定原理
    NOI2019 退役记
    友情链接
    算法博客总结
    总结各类错误(always online)
    学习笔记:powerful number求积性函数前缀和
    LOJ#2409. 「THUPC 2017」小 L 的计算题 / Sum(生成函数)
    多项式简单操作
    LOJ #3103. 「JSOI2019」节日庆典
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/5048875.html
Copyright © 2011-2022 走看看