美文网首页语言基础
es6属性标识-js-v1.0.0

es6属性标识-js-v1.0.0

作者: 一点金光 | 来源:发表于2019-08-10 08:19 被阅读0次
---
title:es6属性标识
date: 2018-06-09 16:29:00
updated: 2018-06-10 12:00:00
categories:
- 前沿脚本
- 编程开发
tags:
- nodejs
---

发现问题:
使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。
解决问题:
Symbol保证每个属性的名字都是独一无二,从根本上防止属性名的冲突

创建?

//创建
let s = Symbol();
//检查
typeof s
// "symbol"

const sym = Symbol('foo');
String(sym) // "Symbol(foo)"
sym.toString() // "Symbol(foo)"

使用?

作为属性名字

let mySymbol = Symbol();

// 第一种写法
let a = {};
a[mySymbol] = 'Hello!';

// 第二种写法
let a = {
  [mySymbol]: 'Hello!'
};

// 第三种写法
let a = {};
Object.defineProperty(a, mySymbol, { value: 'Hello!' });

// 以上写法都得到同样结果
a[mySymbol] // "Hello!"

获取属性名字

const obj = {};
let a = Symbol('a');
let b = Symbol('b');

obj[a] = 'Hello';
obj[b] = 'World';

const objectSymbols = Object.getOwnPropertySymbols(obj);

objectSymbols
// [Symbol(a), Symbol(b)]

获取某个标识
有时,我们希望重新使用同一个 Symbol 值,Symbol.for方法可以做到这一点。

let s1 = Symbol.for('foo');
let s2 = Symbol.for('foo');

s1 === s2 // true

相关文章

  • es6属性标识-js-v1.0.0

    发现问题:使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方...

  • Es6写react

    1.组件的属性props 1.1设置默认属性 在ES6中为属性:defaultProps(可以标识static定义...

  • JavaScript 基本(二)symbol类型

    symbol是ES6新增的类型。符号是原始值,且符号实例是唯一的、不可变的。符号的用途是确保对象属性使用唯一标识符...

  • es6 class实现静态属性、私有属性、方法

    1.class实现静态属性 参考:ES6 class 静态属性和私有方法 es6中实现了静态方法,但是没有静态属性...

  • ECMAScript对象扩展

    属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法 ES6允许在对象之中,只写属性名,不写属性值...

  • 候选码

    定义:某一属性或属性组的值能唯一的标识一个元组,而其任何、子集都不能再标识。即可以唯一标识一个元组的最少的属性集合...

  • 【JS ES6】Class

    类定义/调用 私有属性 ES6暂未提供私有属性,默认使用#开头表示私有属性 私有方法ES6暂未提供,默认使用_下划...

  • Ajax的XMLHttpRequest对象的属性和方法

    属性 readyState属性标识XMLHttpRequest对象的状态,有五种值 responseText属性该...

  • ECMAScript6基础学习教程(五)对象

    ES6在处理对象上,又添加了新方法。 1. 属性简洁写法 当属性名和属性值变量同名时,ES6允许在对象中只写属性名...

  • ES6对象用法

    属性的简洁表示法 ES6允许直接写入变量和函数,作为对象的属性和方法。 ES6允许在对象之中直接写变量,这时,属性...

网友评论

    本文标题:es6属性标识-js-v1.0.0

    本文链接:https://www.haomeiwen.com/subject/avdarctx.html