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
转载于:https://www.cnblogs.com/zuichumx0826/p/9355399.html