面向对象编程-类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(){}
}