Symbol类型是不可枚举的】的更多相关文章

const info = { [Symbol('a')]: 'b' } console.log(info)//{Symbol('a'): 'b'} console.log(Object.keys(info))//[] Symbol类型是不可枚举的.Object.keys方法返回对象上的所有可枚举的键属性.Symbol类型是不可见的,并返回一个空数组. 记录整个对象时,所有属性都是可见的,甚至是不可枚举的属性. 这是Symbol的众多特性之一:除了表示完全唯一的值(防止对象意外名称冲突,例如当使用…
前面的话 ES5中包含5种原始类型:字符串.数字.布尔值.null和undefined.ES6引入了第6种原始类型——Symbol ES5的对象属性名都是字符串,很容易造成属性名冲突.比如,使用了一个他人提供的对象,想为这个对象添加新的方法,新方法的名字就有可能与现有方法产生冲突.如果有一种机制,保证每个属性的名字都是独一无二的,这样就从根本上防止了属性名冲突.这就是ES6引入Symbol的原因,本文将详细介绍ES6中的Symbol类型 创建 Symbol 值通过Symbol函数生成.这就是说,…
es6 新增了一个原始类型Symbol,代表独一无二的数据 javascript 原来有6中基本类型, Boolean ,String ,Object,Number, null , undefined (typeof null 是等于object) //es6 引进Symbol 表示独一无二的值 console.log(typeof(null)) //objert let person = { name: '2121' } console.log(typeof(person)) //objert…
ES5中包含5种原始类型:字符串.数值.布尔值.null.undefined.ES6引入了第6种原始类型——Symbol. ES5的对象属性名都是字符串,很容易造成属性名冲突.比如,使用了一个他人提供的对象,想为这个对象添加新的方法,新方法的名字就有可能与现有方法产生冲突.如果有一种机制保证每个属性的名字都是独一无二的,这样就从根本上防止了属性名冲突.这就是ES6引入Symbol的原因. 一.创建 Symbol 值通过Symbol函数生成.这就是说,对象的属性名可以有两种类型:一种是字符串,另一…
一.Symbol类型: 1.ES6引入了一种新的原始数据类型Symbol,表示独一无二的值.它是JavaScript语言的第七种数据类型,前六种是:Undefined.Null. 布尔值(Boolean).字符串(String).数值(Number).对象(Object). let s = Symbol(); typeof s; //"symbol" 2.Symbol函数可以接受一个字符串作为参数,表示对Symbol实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分.…
系列文章 -- ES6笔记系列 Symbol是什么?中文意思是标志.记号,顾名思义,它可以用了做记号. 是的,它是一种标记的方法,被ES6引入作为一种新的数据类型,表示独一无二的值. 由此,JS的数据类型多了一位成员: Number.String.Boolean.undefined.Object.Symbol 一.简单使用 1. 声明 类似字符串String的声明方式 var str = 'str'; Symbol的声明方式类似,它调用构造函数Symbol() var s = Symbol();…
Symbols 是 ES6 引入了一个新的数据类型 ,它为 JS 带来了一些好处,尤其是对象属性时. 但是,它们能为我们做些字符串不能做的事情呢? 在深入探讨 Symbol 之前,让我们先看看一些 JavaScript 特性,许多开发人员可能不知道这些特性. 背景 js 中的数据类型总体来说分为两种,他们分别是:值类型 和 引用类型 值类型(基本类型):数值型(Number),字符类型(String),布尔值型(Boolean),null 和 underfined 引用类型(类):函数,对象,数…
这篇es6的学习笔记来自于表哥 表严肃,是我遇到过的讲课最通透,英文发音最好听的老师,想一起听课就去这里吧 https://biaoyansu.com/i/hzhj1206 ES6就是JS6,JS的第六个版本,ES可以理解为一个标准,JS可以理解为一个标准的实现. ES6现在各大浏览器都在全力支持,ES6强大.严谨.简洁.兼容问题可以用一些工具解决,把es6转化成es5,开发时写es6,生产环境跑es5. 1 let命令 1.1作用域 let和var一个功能,但是作用域不同, var可以作为全局…
应用场景1:使用Symbol来作为对象属性名(key) 在这之前,我们通常定义或访问对象的属性时都是使用字符串,比如下面的代码: let obj = { abc: 123, "hello": "world" } obj["abc"] // 123 obj["hello"] // 'world' 而现在,Symbol可同样用于对象属性的定义和访问: const PROP_NAME = Symbol() const PROP_AG…
ES5 的对象属性名都是字符串,这容易造成属性名的冲突.比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突.如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突.这就是 ES6 引入Symbol的原因 ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值.它是 JavaScript 语言的第七种数据类型,前六种是:undefined.null.布尔值(Boolean).字符串(S…
自ECMAScript 2015(ES6)起,symbol成为了一种新的原生类型,就像基本类型number和string一样. ⒈介绍及使用方式 TypeScript中使用symbol类型和JavaScript的使用方式如出一辙,也是通过Symbol构造函数创建的. let sym1 = Symbol(); let sym2 = Symbol("key"); // 可选的字符串key 需要注意的是,Symbols是不可改变且唯一的. let sym2 = Symbol("ke…
七种数据类型 ·Symbol ·undefined ·null ·Boolean ·String ·Number ·Object let a = Symbol('this is a symbol'); let b = Symbol(); console.log(a === b); //false Symbol的用途:在{ }作用域内可以临时重写一个变量 // //file1.js let name = Symbol(); { var person = { }; person[name] = 'F…
1.前言 大家都知道,在ES5的时候JavaScript的基本类型有Number.String.Boolean.undefined.object.Null共6种,在es6中,新增了Symbol类型,用于表示独一无二的值.之后又提出了bigInt类型(前面提到过),这里简要的总结Symbol的一些基本用法. 2.基本用法 2.1 用法一(直接使用) 可以直接使用Symbol()创建新的symbol类型,如: let s = Symbol() console.log(typeof s); // sy…
本文所有Demo的运行环境都为nodeJS, 参考:让nodeJS支持ES6的词法----babel的安装和使用 : ES6新增了一种数据类型:Symbol,Symbol是用来定义对象的唯一属性名的不二之选: Symbol如何使用 Symbol如何使用呢, Symbol不是一个构造函数哦, 如果用new Symbol的话, 会报错的: var sym1 = Symbol(); var sym2 = Symbol("foo"); var sym3 = Symbol("foo&q…
每个语法节点Tree都有Type属性,部分的语法节点有Symbol属性,如下: 与Symbol类型与Type类型之间的关系如下: 下面是Symbol与Type之间的关系: (1)MethodSymbol("finalize").type = MethodType("()void").tsym= ClassSymbol("Method").type=ClassType("Method").tsym=ClassSymbol(&qu…
1.概述 ES5 的对象属性名都是字符串,这容易造成属性名的冲突.比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突.如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突.这就是 ES6 引入Symbol的原因. ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值.它是 JavaScript 语言的第七种数据类型,前六种是:undefined.null.布尔值(Boolean)…
今天浏览网页的时候发现,JS中有七种语言类型.我的内心???百度一下哪里来的第七种!! 好吧跟着来回顾一下JS的前6种undefined null boolean string numver object还有一个,新来的小伙,symbol 当我百度过后得到以下答案: 表示独一无二的值,它是一切非字符串的对象key的集合. Symbol 值通过Symbol函数生成.这就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种就是新增的 Symbol 类型.凡是属性名属于 Symbol…
javascript中原始值,即基本数据类型,像Number,String,Boolean,undefined,Null都是基本类型值,保存在栈中,但是有个疑问: Symbol打印出来明明是个函数,具有prototype的属性,不能实例化的原因是:Symbol是个原始值.但Symbol明明就是个函数的鸭,而且: Symbol.__proto__ === Function.prototype //true Symbol.constructor === Function.prototype.cons…
这篇文章主要介绍了深入了解JavaScript中的Symbol的使用方法,本文针对ES6版本的JS进行讲解,需要的朋友可以参考下 Symbol 是什么? Symbols 不是图标,也不是指在代码中可以使用小图片: 也不是指代其他一些东西的语法.那么,Symbol 到究竟是什么呢?七种数据类型 JavaScript 在 1997 年被标准化时,就有 6 种数据类型,直到 ES6 出现之前,程序中的变量一定是以下 6 种数据类型之一: Undefined    Null    Boolean   …
不知道大家有没有留意ES6中的Symbol函数?在此之前,我对Symbol的认识知识这样的:  一.Symbol()和Symbol.for('str') Symbol()是独一无二的,你无法创建两个相同的Symbol对象出来,但是Symbol.for()会帮你去找某一个Symbol对象,如果找到了那就返回这个已经创建过的Symbol对象,如果找不到,就帮你创建一个,总不能空手而归吧. 所以,我们可以通过Symbol.for()来找以前创建的Symbol对象(实际上按照ES6的说法他是一个新的基本…
ES5:对象的属性名只能是字符串,当给对象添加新属性时,很容易造成属性名冲突,从而覆盖了原有的属性. ES6:所以ES6中引入了symbol数据类型,他表示独一无二的值,避免了属性名的冲突,此时对象的属性名可由字符串类型或者symbol类型来定义. symbol是一种基本数据类型,通过Symbol()函数来返回symbol类型的值,具有唯一性. 语法:Symbol([description]) 参数:description可选,字符串类型,表示对symbol的描述,调试时更容易区分. 一.作为普…
①使用parseInt()/parseFloat()(在ECMAScript6中是Number.parseInt()/Number.parseFloat()) console.log(parseInt('a10'));//NaN console.log(parseInt('1a0')); console.log(parseInt('10a')); console.log(parseInt('10')); console.log(parseFloat('a10.1'));//NaN console…
ECMAScript 6入门 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了. (2016年6月,发布了小幅修订的<ECMAScript 2016 标准>(简称 ES2016).由于变动非常小(只新增了数组实例的includes方法和指数运算符),因此 ES2016 与 ES2015 基本上是同一个标准,都被看作是 ES6.) let和const命令 let 声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的…
1.引言--JavaScript就是一个熊孩子   1.1对于JSer们来说,js是自由的,但同时又有许多让人烦恼的地方.javascript很多时候就是这么一个熊孩子,他很多时候并不会像C和java这些"好孩子"那样循规蹈矩.因此给我们带来许多烦恼   <1>运行时候控制台报错:uncaught error,这尤其令人恼火的是系统告诉我们有错误但是又不告诉我们错误发生在哪里.试想一下,你到一个地方旅游迷了路,一个当地的熊孩子一直笑嘻嘻地跟在你后头告诉你:"你走错…
ECMAScript语言类型对应于使用ECMAScript语言的ECMAScript程序员直接操作的值.ECMAScript语言类型有以下几种Undefined,Null,Boolean,String,Symbol,Number和Object.ECMAScript语言值是以ECMAScript语言类型为特征的值. 如果你奇怪为什么这里没有写Function类型,并且把Null也当做一种类型,建议你看一下hax在知乎上的一个回答JavaScript 里 Function 也算一种基本类型? 简单说…
前言  每逢学习一个新的语言时总要先了解这门语言支持的数据类型,因为数据类型决定这门语言所针对的问题域,像Bash那样内置只支持字符串的脚步明显就是用于文本处理啦.而数据类型又分为标量类型(Scalar).结构类型(Struct)和集合类型(Collection),标题中的简单类型实质就是指标量类型.  cljs中内置的标量类型比js的丰富得多,一方面方便了操作,另一个方面增加了学习成本,因此从js转向cljs时可能会略感不适,下面我们一起来认识吧! 标量类型一览 ;; 空值/空集 nil ;;…
简介:ES5的对象属性名都是字符串,这就很容易造成属性名的冲突,比如一个项目很庞大,又不是一个人开发 的,就有可能会造成变量名冲突,如果有一个独一无二的名字就好了,这样就能从根本上防止属性名冲突.这就是ES6引入Symbol的原因. ES6引入的是一种新的原始数据类型Symbol,表示独一无二的,它是JavaScript的底气种数据类型.Symbol值通过Symbol函数生成,只要属性名是属于Symbol类型的,就是独一无二的,可以保证不会与其他属性名产生冲突. let s = Symbol()…
let s = Symbol(); alert(typeof(s)); // Symbol函数可以接受一个字符串作为参数,表示对 Symbol 实例的描述,主要是为了在控制台显示,或者转为字符串时,比较容易区分. let s1 = Symbol('foo'); let s2 = Symbol('bar'); // s1 // Symbol(foo) // s2 // Symbol(bar) alert(s1.toString()); // "Symbol(foo)" alert(s2.…
学习了es6语法的symbol类型,整理笔记,闲时复习. Symbol 是es6新增的第七种原始数据类型(null,string,number,undefined,boolean,object),是为了在对象中对属性名滥用而导致的冲突问题. ps: 既然是数据类型,不是对象,那么就不能用new命令,因此不能添加属性 let a = Symbol('a') console.log(a) // Symbol(a) console.log(typeof a) // symbol 简单来说:一旦声明一个…
ES6 规范之前, JavaScript 一共有六种数据类型,分别是五种基本数据类型: string . number , boolean , null , undefined ,和一种引用数据类型: object .在 ES6 中,新增了一种基本数据类型 Symbol ,用来表示独一无二的值.var s1 = Symbol();var s2 = Symbol();console.log(s1 === s2) ;注意: Symbol 函数的参数只是表示当前 Symbol 值的描述,相同参数的 S…