🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[TOC] >[success] # Symbol的使用方法 [Object.defineProperty() 和 Object.defineProperties()用法](https://ihavenolimitations.xyz/wangjiachong/javascript/1364571) ~~~ 你可以在任意能使用'需计算属性名'的场合使用'Symbol'。此前的例子已经展示了'Symbol'的'方括号'用法,而 你还能在对象的'需计算字面量属性名'中使用'Symbol',此外还可以在'Object.defineProperty()'或 'Object.defineProperties()'调用中使用它,例如: ~~~ ~~~ // 定义私有属性firstName let firstName = Symbol("first name") // 使用一个需计算字面量属性 let person = { [firstName]: "Nicholas" } // 让该属性变为只读 Object.defineProperty(person, firstName, { writable: false }) // 定义私有属性lastName let lastName = Symbol("last name") // 给对象添加lastName属性 Object.defineProperties(person, { [lastName]: { value: "Zakas", writable: false } }) console.log(person[firstName]) // "Nicholas" console.log(person[lastName]) // "Zakas" ~~~ <br/> >[warning] # 注意 ~~~ 'Symbol'属性是'不可枚举'的,也就是用对象的属性是'Symol'类型的不可以'for in', 也不可以'Object.keys()' ~~~