JavaScript封装

类的创建

//类
var Book = function(id,name){
   //私有属性
   var bookid = id;
   //私有方法
   function checkId(){
      if (id == 1){
         return true;
      }else {
         return false;
      }
   }
   //特权方法  
   this.setName =  function (name) {    console.log("this特权方法:"+name);}
  //对象共有属性
  this.id = id;
  //对象公用方法
  this.copy =  function(){
    console.log("this特权方法:"+name);
  }
  //构造器
  this.setName(name);
}
//类公用方法和公用属性
Book.protptype = {
   isJSBook = true;
   display:function(){
   }
}
//类静态公用方法和公用属性
Book.isBook = true;
Book.display = function(){
console.log("this is 类静态公用方法")
}

this上定义的属性和方法都可以new一个实例来使用,eg: var a = new Book()。
而类通过点生产的方法是对象的静态共有属性和静态共有方法,是无法使用new出的实例访问的。但是类通过prototype创建的公用方法和公用属性是可以通过this访问到的。

var book = new Book(1,"niubi");
console.log(book.bookid);//私有属性无法访问
console.log(book.id);//返回1
book.setName();//返回this is 类静态公用方法
console.log(book.isBook);//对象访问:undefined
console.log(Book.isBook);//类访问是没问题的:true
Book.display();//类访问是没问题的:this is 类静态公用方法

闭包

闭包是有权访问另外一个函数作用域变量的函数,也是一个函数内部的函数。
eg:

var Book =(function(){
  var bookNum = 0;//私有变量
  function checkBook(name) {}//私有方法
  function _book(newId,newName,newPrice) {
      var name,price;  //闭包私有变量
      name = newName;
      this.getName = function () {
          return name;
       }
      this.getNum = function () {
          return bookNum; 
      } 
   }
  return _book;//返回类
})();

//测试
<script>
var book = new Book(1,"niubi","123");
console.log(book.getName());//niubi
console.log(book.getNum()); //0 
</script>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,898评论 18 399
  • 一、生成实例对象的原始模式 二、工厂模式 三、构造函数模式 所谓"构造函数",其实就是一个普通函数,但是内部使用了...
    CoderLF阅读 1,040评论 0 0
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 42,429评论 11 349
  • 昨天偶然发现某宝的推送商品然后我又为天朝同胞的消费能力给惊呆了!图一是我在清迈平时的夜市买的蝴蝶耳环,先说明一下平...
    愛吃辣椒的驢子阅读 3,355评论 0 0