闭包和私有类都是用来创建私有变量和函数的方式,但它们的实现方式不同。
闭包是通过在函数内部创建函数,并在函数内部返回该函数,从而创建私有变量和函数的。例如:
function counter() { var count = 0; function add() { count++; console.log(count); } return add; }
var c = counter(); c(); // 输出 1 c(); // 输出 2
在上面的例子中,count是闭包内的私有变量,只能通过add函数来访问。每当我们调用c()时,count都会增加1。
另一方面,私有类是通过使用ES6中的类和封装特性来创建私有变量和函数的。例如:
class Counter { #count = 0; add() { this.#count++; console.log(this.#count); } }
var c = new Counter(); c.add(); // 输出 1 c.add(); // 输出 2
在上面的例子中,#count是私有变量,只能在Counter类的内部访问。每当我们调用c.add()时,#count都会增加1。
总的来说,闭包是一种更早的方式,它在ES6之前就可以用于创建私有变量和函数,但它的实现方式比较复杂。私有类是ES6中的新功能,它简化了创建私有变量和函数的过程,并且更易于阅读和理解。
上一篇:闭包和普通函数之间的区别
下一篇:闭包和this有什么区别?