闭包是一个在面试当中经常被问到的问题,在网上收罗的答案也是很难懂的,今天就给大家简单的解释一下什么是函数的闭包。
闭包是有权访问另外一个函数作用域中变量的函数,即在一个函数内部创建另一个函数。
我们将这个闭包作为创建对象的构造函数,这样它既是闭包又是可实例对象的函数。
var Book = (() => {
//静态私有变量
var bookNum = 0
//静态私有方法
function checkBook(num) {}
//创建类
function _book(newId,newName,newPrice) {
//私有变量
var name , price
//私有方法
function checkId(id) {}
//特权方法
this.getName = ()=>{}
//公有属性
this.id = id
//公有方法
this.copy = ()=>{}
//构造器
this.setName(name)
this.setPrice(price)
};
//构建原型
_book.prototype = {
isJsBook :false,
display :()=>{}
};
//返回类
return _book;
})
这样就是一个完整的闭包。