多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] >[success] # Symbol的使用方法 [Object.defineProperty() 和 Object.defineProperties()用法](https://www.kancloud.cn/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()' ~~~