ES6学习——新的语法:Symbol private类属性
来源:互联网 发布:(综琼瑶)知君用心 编辑:程序博客网 时间:2024/06/14 22:38
ES6本身并没有提供class属性的私有(private)还是公有(public)的特性,以前要实现类属性的私有化,一般可以通过下面这种方法进行模拟:
function Person(name) { var _name = name this.setName = function(name) { _name = name; } this.getName = function() { return _name; }}
但上面这种写法有个问题,就是没能利用js原型继承的优点,你每new一个Person出来,就会给这个实例挂上两个方法,而不是利用原型共享方法。
下面看如何利用Symbol的特性实现私有属性:
var Person = (function() { var nameSymbol = Symbol('name'); function Person(name) { this[nameSymbol] = name; } Person.prototype.getName = function() { return this[nameSymbol]; }; return Person;}());var p = new Person('John');print('Person 3 name: ' + p.getName());delete p.name;print('Person 3 name: ' + p.getName() + ' — stays private.');print('Person 3 properties: ' + Object.getOwnPropertyNames(p));
0 0
- ES6学习——新的语法:Symbol private类属性
- ES6学习——新的语法:Symbol概述
- ES6学习——新的语法:Symbol API介绍
- ES6学习——新的语法:Symbols——Symbol.toPrimitive,Symbol.hasInstance,Symbol.toStringTag,Symbol.species
- ES6学习——新的语法:Symbols——Symbol.iterator
- ES6学习——新的语法:let
- ES6学习——新的语法:const
- ES6学习——新的语法:函数参数Spread
- ES6学习——新的语法:数组元素Spread
- ES6学习——新的语法:Rest
- ES6学习——新的语法:函数参数默认值
- ES6学习——新的语法:函数参数解构
- ES6学习——新的语法:Arrow Functions
- ES6学习——新的语法:for..of 循环
- ES6学习——新的语法:Template Literals
- ES6学习——新的语法:Tagged Templates
- ES6学习——类语法:Symbol.species在实例创建中的应用
- 对于ES6新数据类型Symbol()的理解和学习
- 走进数据结构之排序(二)---希尔排序
- hadoop作业执行之TaskTracker
- Mybatis三剑客(mybatis-generator、mybatis-plugin、mybatis-pagehelper)介绍、配置及破解
- 将一串字符(hello world I am c_player)反转为(c_player am I world hello)
- Linux常用命令大全
- ES6学习——新的语法:Symbol private类属性
- C、C++中的结构体
- mysql多实例
- BrocastReceiver(二)
- Tomcat部署项目,访问的时候不带项目名称
- LB/LVS之KeepAlived总结
- 网络缓冲图片到sd卡
- TLD算法概述(一)
- Spring框架整合CXF WebService实现原理