var Book = function (id, name, price) {
//private(在函数内部定义,函数外部访问不到,实例化之后实例化的对象访问不到)
var num = 1;
var id = id;
function checkId() {
console.log('private')
}
//protected(可以访问到函数内部的私有属性和私有方法,在实例化之后就可以对实例化的类进行初始化拿到函数的私有属性)
this.getName = function () {
console.log(id)
}
this.getPrice = function () {
console.log(price)
}
//public(实例化的之后,实例化的对象就可以访问到了~)
this.name = name;
this.copy = function () {
console.log('this is public')
}
}
//在Book的原型上添加的方法实例化之后可以被实例化对象继承
Book.prototype.proFunction = function () {
console.log('this is proFunction')
}
//在函数外部通过.语法创建的属性和方法,只能通过该类访问,实例化对象访问不到
Book.setTime = function () {
console.log('this is new time')
}
var book1 = new Book('111','悲惨世界','$99')
book1.getName(); // 111 getName是protected,可以访问到类的私有属性,所以实例化之后也可以访问到函数的私有属性
book1.checkId(); //报错book1.checkId is not a function
console.log(book1.id) // undefined id是在函数内部通过定义的,是私有属性,所以实例化对象访问不到
console.log(book1.name) //name 是通过this创建的,所以在实例化的时候会在book1中复制一遍name属性,所以可以访问到
book1.copy() //this is public
book1.proFunction(); //this is proFunction
Book.setTime(); //this is new time
book1.setTime(); //报错book1.setTime is not a function