学习
实践
活动
工具
TVP
写文章

Javascript Symbol 解惑 什么是Symbol创建Symbol如何使用Symbol

但是 Symbol 只能通过构造函数 Symbol() 进行创建: const sym = Symbol(); 或者,我们可以传入一个字符串参数(descriptor)用于描述该Symbol: const sym = Symbol('cat'); 注意:传入的参数对 Symbol 值的产生并无影响,因为就算每次传入的参数都一样,生成的Symbol值也是不等的。 所以,下列等式结果为 false: Symbol('cat') === Symbol('cat') // false Symbol.for(key) 和 Symbol() 类似,Symbol.for(key ) 也可以创建一个Symbol,不一样的是:创建的 Symbol 是全局的(在全局Symbol表中注册),而如果全局已经存在相同 key 的Symbol,则直接返回该Symbol。 所以,下列等式结果为 true: Symbol.for('cat') === Symbol.for('cat') // true 如何使用Symbol 其实 Symbol 本身很简单,但是如何把它用好、

1.3K20

Symbol

Transfer-Encoding (传输编码) 是常见的 HTTP 头 字段,表示将实体安全传递给用户所采用的编码形式。与另外一个更为常见的 Content-...

10220
  • 广告
    关闭

    2022腾讯全球数字生态大会

    11月30-12月1日,邀您一起“数实创新,产业共进”!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Symbol

    Symbol.png Symbol 概述 ES5 的对象属性名都是字符串,这容易造成属性名的冲突 Symbol的引入,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突 它是 JavaScript Symbol 值不是对象,所以不能添加属性 Symbol 值不能与其他类型的值进行运算,会报错 Symbol 值可以显式转为字符串 Symbol 值也可以转为布尔值,但是不能转为数值 作为属性名的 Symbol 键名 Symbol.for(),Symbol.keyFor() 我们希望重新使用同一个 Symbol 值,Symbol.for方法可以做到这一点 它接受一个字符串作为参数,然后搜索有没有以该参数作为名称的 Symbol 值 如果有,就返回这个 Symbol 值,否则就新建并返回一个以该字符串为名称的 SymbolSymbol.for()不会每次调用就返回一个新的 Symbol 类型的值,而是会先检查给定的 内置的 Symbol 值 除了定义自己使用的 Symbol 值以外,ES6 还提供了 11 个内置的 Symbol 值,指向语言内部使用的方法 对象的Symbol.hasInstance属性,指向一个内部方法

    18520

    tbase symbol lookup error: .psql: undefined symbol: PQsetErrorContextVisibility

    /psql: symbol lookup error: . /psql: undefined symbol: PQsetErrorContextVisibility原因分析此报错为libpq.so版本不对因为本地环境还安装了开源pg库postgresql-libs

    36420

    Yet Another Intro for Symbol

    => typeof val === 'symbol' const buildInSymbols = new Set( Object.getOwnPropertyNames(Symbol) .map(key => Symbol[key]) .filter(isSymbol) ) Symbol.hasInstance A method determining if a constructor instance Create our own unique local Symbol value with code Symbol(key? : string) Note that Symbol('hi') won't coerce the string hi into a Symbol, it creates a brand new Symbol Return the key of a global symbol instance Symbol.keyFor(instance: symbol) Note that, calling Symbol.keyFor

    10620

    latex math symbol

    25520

    undefined symbol: sq

    usr/devsoft/apache/modules/libphp5.so into server: /usr/devsoft/apache/modules/libphp5.so: undefined symbol

    26420

    CC++未定义行为

    下面是一段代码,这段代码中有标准未定义的行为。

    32910

    元编程之symbol

    甚至还可以有obj['Symbol()'] = 1这种操作: 在react打印出来的组件对象里面,也可以看见一些symbol的属性。 ? 但是,想像其他变量那样子用怎么办,也就是以不同姿势使用同样的方法,期望得到同样的值,期望近似与symbol('a')和symbol('a')是完全相等这种效果 这时候,Symbol.for刚刚好满足需求了 : const a = Symbol.for('im not alone') const b = Symbol.for('im not alone') a === b 这下symbol就是有点简单数据类型的感觉了吧 Symbol.iterator 这个属性,是一个当前对象默认的遍历器生成函数,所以我们用obj[Symbol.iterator]可以访问到它。 而Symbol也有这种操作到更底层的方法:Symbol.toPrimitive,可以自定义 // 不玩包装类的string var s = new String(''); s[Symbol.toPrimitive

    26520

    ES6——Symbol

    let s = Symbol(); typeof s // "symbol" Symbol创建 Symbol 值通过Symbol函数生成,不能使用new,否则会报错。 let s1 = Symbol('foo'); let s2 = Symbol('bar'); s1 // Symbol(foo) s2 // Symbol(bar) s1.toString() / Symbol函数的参数只是表示对当前 Symbol 值的描述,因此相同参数的Symbol函数的返回值是不相等的。 `your symbol is ${sym}` // TypeError: can't convert symbol to string Symbol转换 Symbol 值可以显式转为字符串。 let sym = Symbol('My symbol'); String(sym) // 'Symbol(My symbol)' sym.toString() // 'Symbol(My symbol

    20440

    es6 Symbol

    1.Symbol 值通过Symbol 函数生成,凡是属性名属于Symbol 类型,就是   独一无二的,可以保证不会与其他属性名冲突。        let s1 = Symbol('foo');     let s2 = Symbol('foo');     s1 === s2 // false 2.作为属性名的 Symbol   由于每个Symbol (a),Symbol(b)] 4.Es6 提供内置 Symbol.      Symbol.hasInstance Symbol.isConcatSpreadable Symbol.species     Symbol.match Symbol.replace Symbol..split Symbol..iterator     Symbol.toPrimitive Symbol.toStringTag

    38270

    cannot resolve symbol XXX

    原因:出现这种情况的原因是在IDEA或者myeclipse编译器中没有导入相关的jar包(jar包相当于类的集合,可以使用其中的类); 针对IDEA出现cannot resolve symbol 'XXX 解决办法(Myeclipse需要下载jar包,IDEA只需在pom.xml中添加相关依赖的jar包就行): 1、首先确定自己写的是maven类型的项目 2、比如我的是这种错误,cannot resolve symbol

    4.8K30

    JS高阶(二)Symbol

    基本用法 Symbol 函数栈不能用 new 命令,因为 Symbol 是原始数据类型,不是对象。 let sy = Symbol("KK"); console.log(sy); // Symbol(KK) typeof(sy); // "symbol" // 相同参数 Symbol() 返回的值不相等 let sy1 = Symbol("kk"); sy === sy1; // false 定义方式 Symbol() let hd = Symbol(); let demo = Symbol(); 可以通过 Symbol 添加描述来进行标记 Symbol 数据类型的数据对象; let id = Symbol('学生id'); console.log(id); //Symbol(学生id) cnosole.log symbol数据 * 以一个symbol数据的description为父类 * 相同的symbol对象全部归为其子类 */ let a = Symbol.for('test demo'); let

    11010

    Ecmascript语法之Symbol

    Symbol 概述 作为属性名的Symbol 实例:消除魔术字符串 属性名的遍历 Symbol.for(),Symbol.keyFor() 实例:模块的 Singleton 模式 内置的SymbolSymbol函数的参数只是表示对当前 Symbol 值的描述,因此相同参数的Symbol函数的返回值是不相等的。 var sym = Symbol('My symbol'); String(sym) // 'Symbol(My symbol)' sym.toString() // 'Symbol(My symbol Symbol.for(),Symbol.keyFor() 有时,我们希望重新使用同一个Symbol值,Symbol.for方法可以做到这一点。 Symbol.for("bar") === Symbol.for("bar") // true Symbol("bar") === Symbol("bar") // false 上面代码中,由于Symbol

    35190

    cannot resolve symbol println

    IntelliJ 无法快捷键输出System.out.println();并且即使手动输入也会报错cannot resolve symbol println() 开发这么就,竟然犯了很二的错误。

    11630

    Js中Symbol对象

    Js中Symbol对象 ES6引入了一种新的基本数据类型Symbol,表示独一无二的值,最大的用法是用来定义对象的唯一属性名,Symbol()函数会返回symbol类型的值,该类型具有静态属性和静态方法 每个从Symbol()返回的symbol值都是唯一的,一个symbol值能作为对象属性的标识符。 描述 对于每一个Symbol的值都是不相等的,所以Symbol作为对象的属性名,可以保证属性不重名。 symbol,并放入全局symbol注册表中。 和Symbol()不同的是,用Symbol.for()方法创建的的symbol会被放入一个全局symbol注册表中。 ()); // Symbol(s) Symbol.prototype.valueOf() symbol.valueOf() valueOf()方法返回当前symbol对象所包含的symbol原始值。

    49100

    EXPORT_SYMBOL使用

    EXPORT_SYMBOL只出现在2.6内核中,在2.4内核默认的非static 函数和变量都会自动导入到kernel 空间的, 都不用EXPORT_SYMBOL() 做标记的。 1、EXPORT_SYMBOL的作用 EXPORT_SYMBOL标签内定义的函数或者符号对全部内核代码公开,不用修改内核代码就可以在您的内核模块中直接调用,即使用EXPORT_SYMBOL可以将一个函数以符号的方式导出给其他模块使用 warning,寄希望于在insmod的时候,内核能够把这个symbol连接上。 在模块mod1中,EXPORT_SYMBOL(func1); 在模块mod2中,extern int func1(); 就可以在mod2中调用func1了 EXPORT_SYMBOL示范 比如有两个驱动模块 \n",__func__); return 0; } // Export symbol func1 EXPORT_SYMBOL(func1); static

    8820

    为何使用 JavaScript Symbol 【译】

    Symbol 是什么 现在我们已经知道基本数据类型(primitive)是什么了。一个Symbol是不能重复创建的基本数据类型。也就是说,一个symbol可以类似一个对象的实例,是不会相等的。 就是说每一个symbol是唯一的基本数据类型。 例如: const s1 = Symbol(); const s2 = Symbol(); console.log(s1 === s2); // false 当初始化一个symbol时可以传一个字符串对象 可惜的是,还是有办法访问到symbol作为Object的key的值。例如, Reflect.ownKeys()方法可以列出Object的包括string和symbol的所有key。 ] console.log(JSON.stringify(obj)); // {} 小结 每个从Symbol()返回的symbol值都是唯一的。

    22020

    扫码关注腾讯云开发者

    领取腾讯云代金券