Symbol 作为属性名,遍历对象的时候,该属性不会出现在for...in、for...of循环中,也不会被Object.keys()、Object.getOwnPropertyNames()、JSON.stringify()返回。但是,它也不是私有属性,有一个Object.getOwnPropertySymbols()方法,可以获取指定对象的所有 Symbol 属性名。该方法返回一个数组,成员是当前对象的所...
let _password = Symbol('password')const obj = { name: 'Echa', gender: 'male', [_password]: '123456'}for (let item in obj) { console.log(item);}console.log(Object.keys(obj));console.log(Object.values(obj));console.log(Object.getOwnPropertyNames(obj));console.log(Object....
Symbol 作为属性名,遍历对象的时候,该属性不会出现在for...in、for...of循环中,也不会被Object.k...
Symbol作为属性名,该属性不会出现在for ..in、for ..of循环中,也不会被Object.keys()、Object.getOwnPropertyNames()、JSON.stringify()返回。 所以我们可以用Object.getOwnPropertySymbols方法,获取指定对象的所有Symbol属性名。 如果一个对象里面有字符串的属性又有Symbol的属性,难不成要分来获取对象属性吗?答案是...
JS数据类型 之 Symbol详解 1、Symbol概述 ES6 引入的一种新的原始数据类型Symbol,表示独一无二的值。 它属于JavaScript语言的原生数据类型之一,其他数据类型是:undefined、null、Boolean、String、Number、Bigint、Object。 使用场景: ES5 的对象属性名都是字符串,这容易造成属性名的冲突。
符号类型,有着唯一性,常用于作为Object 的 key值的存在,由于其唯一性可以使用的场景很多,比如某服务器会话session... Symbol.for 由于其特殊性会产生全局变量,所以其内存不会被回收,使用不当可能会造成内存泄漏 但是Symbol(key) 这样子使用就不会产生全局变量,只是这样就不能通过Symbol.for 找到 ...
JS第七种数据类型Symbol详解 一、什么是Symbol? Symbol是ES6中引入的一种新的基本数据类型,用于表示一个独一无二的值。它是JavaScript中的第七种数据类型,与undefined、null、Number(数值)、String(字符串)、Boolean(布尔值)、Object(对象)并列。 Symbol特点: ...
使用Symbol创建的属性不会出现在for...in循环、Object.keys()或Object.getOwnPropertyNames()方法中,除非明确使用Object.getOwnPropertySymbols()方法或Reflect.ownKeys()方法。 例如: constobj={[Symbol('property1')]:'value1',property2:'value2'};for(constkeyinobj){console.log(key);// 只输出 property2}...
轻松拿到值。其实不难看出来 Symbol 对 for in 不是很友好,但是 对 json 很友好。 这时如果使用别的方法拿值呢?顾名思义,Object.getOwnPropertyNames() 是拿对象私有属性的的方法,我们来试试。 letb={};b[Symbol()]=10;b[Symbol()]=15;Object.getOwnPropertyNames(b)// ...
Symbol是不可枚举的,Symbol作为对象键名时,是不可被遍历的,for...in、Object.keys等方法都得不到Symbol键名,并且JSON.stringify()也不会返回Symbol。 letm =Symbol('a')letf = { [m]:'东方不败',name:'西方求败',name2:'光合作用'}// 西方求败 、 光合作用for(kinf){console.log(f[k]); ...