性质: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, js内部实现:
2.1instanceof方法对应的内部实现接口 Symbol.hasInstance
接上例:
Object.defineProperty(Constr,Symbol.hasInstance,{ value:function(){ return false; } }) console.log(c instanceof Constr); //结果是false, 因为已经用它改写了结果