面向对象编程-类class

一、类的概念

//创建一个类
var Book = function(id, bookName, bookPrice){
    this.id = id
    this.name = bookName
    this.price = bookPrice
}
Book.prototype.show = function(){
    console.log(this.id + this.name + this.price)
}
//实例化
var mathBook = new Book(1, '数学', 39);
mathBook.show();

二、类的理解

//Book类结构
Book = {
  //当创建一个函数(类)时会为其创建一个原型对象prototype
  prototype: {
    //类似函数中创建this一样创建一个constructor属性,并指向原型对象的函数或对象
    constructor: Book,
    //show是我们自定义的一些方法,需要实例化new Book()后才能访问
    show: function(){ console.log(this.id + this.name + this.price) }
  },
  //任何函数function都继承于Function对象
  constructor: function Function(){ [native code] },
  __proto__: function(){ [native code] },
  //需要实例化new Book()后才能访问
  id: undefined, name: undefined, price: undefined
}
//实例化mathBook
mathBook = {
  id: 1, name: "数学", price: 39,
  __proto__: Book.prototype,
  constructor: Book
}

三、一个完整类的例子

var Book = function(id, bookName){
    //私有属性(外部不能访问)
    var _num = 1
    //私有方法(外部不能访问)
    function check(){}
    //特权方法(每个实例都要拥有一份特权方法的副本)
    this.setName = function(){}
    this.getName = function(){}
    //对象公有属性(实例化对象可以访问)
    this.id = id
    //对象公有方法(实例化对象可以访问)
    this.show = function(){}
    //构造器
    this.setName(bookName)
}
//类静态公在属性(实例化对象不能访问)
Book.isMath = true;
//类静态公在方法(实例化对象不能访问)
Book.print = function(){}
Book.prototype = {
    //公有属性(所有实例化对象共享)
    count: 0,
    //公有方法(所有实例化对象共享)
    getCount: function(){}
}