如何用ES6实现类的私有变量?
- 内容介绍
- 文章标签
- 相关推荐
本文共计870个文字,预计阅读时间需要4分钟。
封装实现类的私有变量方式:使用私有变量,不共享变量,通过`new`关键字和`person`构造函数创建实例,内部`this`指向`Tom`。在构造函数内部,创建新的局部空间,再次执行全部代码。代码如下:
javascriptclass Person { constructor(name) { let _num=100; this.name=name; }}
闭包实现类的私有变量方式
私有变量不共享
通过 new 关键字 person 的构造函数内部的 this 将会指向 Tom,开辟新空间,再次全部执行一遍,
class Person{ constructor(name){ let _num = 100; this.name = name; this.getNum = function(){ return _num; } this.addNum = function(){ return ++_num } } } const tom = new Person('tom') const jack = new Person('jack') tom.addNum() console.log(tom.getNum()) //101 console.log(jack.getNum()) //100
私有变量可共享
为避免每个实力都生成了一个新的私有变量,造成是有变量不可共享的问题,我们可以将这个私有变量放在类的构造函数到外面,继续通过闭包来返回这个变量。
本文共计870个文字,预计阅读时间需要4分钟。
封装实现类的私有变量方式:使用私有变量,不共享变量,通过`new`关键字和`person`构造函数创建实例,内部`this`指向`Tom`。在构造函数内部,创建新的局部空间,再次执行全部代码。代码如下:
javascriptclass Person { constructor(name) { let _num=100; this.name=name; }}
闭包实现类的私有变量方式
私有变量不共享
通过 new 关键字 person 的构造函数内部的 this 将会指向 Tom,开辟新空间,再次全部执行一遍,
class Person{ constructor(name){ let _num = 100; this.name = name; this.getNum = function(){ return _num; } this.addNum = function(){ return ++_num } } } const tom = new Person('tom') const jack = new Person('jack') tom.addNum() console.log(tom.getNum()) //101 console.log(jack.getNum()) //100
私有变量可共享
为避免每个实力都生成了一个新的私有变量,造成是有变量不可共享的问题,我们可以将这个私有变量放在类的构造函数到外面,继续通过闭包来返回这个变量。

