微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

es6 Symbol

性质:1 唯一的, 2 单独是一个类型, 

 

用作对象的私有属性

1   const sym = Symbol("private");
2 
3   export default function Constr(a){
4     return  {
5       [sym]: 111, //私有属性
6       pub:a
7     }
8   }
9   
<script type="module"></script>
  <script type="module">
    import Constr from "./constr.js";
    var c = new Constr("11111")
    for(var prop in c){
      console.log(prop); //找不到sym属性, 只能找到pub属性
    }
    console.log(Object.keys(c));//同样找不到prop属性
    console.log(Object.getownPropertySymbols(c)); //只有通过该方法才能拿到私有属性

2, instanceof方法对应的内部实现接口 Symbol.hasInstance

接上例:

Object.defineProperty(Constr,Symbol.hasInstance,{
      value:function(){
        return false;
      }
    })
 console.log(c instanceof Constr); //结果是false, 因为已经用它改写了结果

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐