ES6知识点整理Symbol的应用

ES6(ES2015)新特性整理 阅读详情

Symbol,是ES6中引入的新的数据类型,表示独一无二的值。在面向对象中,每个对象都有字符串类型的属性,新方法的名字就有可能与现有方法产生冲突。Symbol的引入保证每个属性的名字都是独一无二的,这样就从根本上防止属性名的冲突。

ES6之前对象属性的命名方法

var obj = {
  name:'Joh',
  'my name': 'Johnny'
}
console.log(obj.name); // Joh
console.log(obj['my name']); // Johnny

引入Symbol之后,变量可以不再重复

let name1 = Symbol('name');
let name2 = Symbol('name');
console.log(name1 === name2); // false

可以看出,虽然都是调用了Symbol函数,但是返回的Symbol类型的name1和name2并不相等

将Symbol类型转换为字符串类型

let name1 = Symbol('name');
let name2 = Symbol('name');

console.log(name1.toString());// Symbol(name)
console.log(String(name2)); // Symbol(name)

Symbol类型应用于对象的属性

let getName = Symbol('name');
let obj = {
  [getName]() {
    return 'Joh';
  }
}
console.log(obj[getName]()); // Joh

Symbol类型的属性具有一定的隐藏性

let name = Symbol('name');
let obj = {
  age:22,
  [name]:'Joh'
};

console.log(Object.keys(obj)); // 打印不出 类型为Symbol的[name]属性

// 使用for-in也打印不出 类型为Symbol的[name]属性
for(var k in obj) {
  console.log(k);
}

// 使用 Object.getOwnPropertyNames 同样打印不出 类型为Symbol的[name]属性
console.log(Object.getOwnPropertyNames(obj)); 

// 使用 Object.getOwnPropertySymbols 可以
var key = Object.getOwnPropertySymbols(obj)[0];
console.log(obj[key]); // Joh

使用Symbol类型模拟对象的私有属性

User 模块

'use strict';
let getName = Symbol('getName');

module.exports = class User {
  [getName]() {
    return 'Joh';
  }

  print() {
    console.log(this[getName]());
  }
}

测试User模块

'use strict';

const User = require('./User');
let user = new User();
user.print(); // Joh

let getName = Symbol('getName');
user[getName](); // getName is not defined 报错, 可知 Symbol 可以在面向对象中模拟私有属性

Symbol.for 和 Symbol.keyFor的应用

let name1 = Symbol.for('name');
let name2 = Symbol.for('name');
console.log(name1 === name2); // true
console.log(Symbol.keyFor(name1)); // name 备注:字符串类型的

使用Symbol.for 获取Symbol类型的值,使用Symbol.keyFor来获取之前的字符串

使用for-of来顺序输出数组的单项

let arr = ['a', 'b', 'c'];
for(let item of arr) {
  console.log(item); // 顺序输出 a b c
}

使用Symbol.iterator迭代器来逐个返回数组的单项

let arr = ['a', 'b', 'c'];
var iterator = arr[Symbol.iterator]();
// next 方法返回done表示是否完成
console.log(iterator.next()); // {value: "a", done: false}
console.log(iterator.next()); // {value: "b", done: false}
console.log(iterator.next()); // {value: "c", done: false}
console.log(iterator.next()); // {value: undefined, done: true}
console.log(iterator.next()); // {value: undefined, done: true}

程序的优化:

let arr = ['a', 'b', 'c'];
var iterator = arr[Symbol.iterator]();
// next 方法返回done表示是否完成
var next = iterator.next();
while(!next.done) {
  console.log(next);
  next = iterator.next();
};

Symbol.iterator在面向对象中的应用实例1:

'use strict';

class UserGroup {
  constructor(users) {
    // json {joh:111,lili:1123}
    this.users = users;
  }

  [Symbol.iterator]() {
    let self = this;
    let i = 0;
    const names = Object.keys(this.users);
    const length = names.length;

    // iterator 对象,可以理解为指针
    return {
      next() {
        let name = names[i++];
        let qq = self.users[name];
        return {value: {name, qq}, done: i > length}
      }
    }
  }
}

let group = new UserGroup({'Joh':'595959','Lili':'888116'});
for (let user of group) {
  console.log(user);
}

// { name: 'Joh', qq: '595959' }
// { name: 'Lili', qq: '888116' }

Symbol.iterator在面向对象中的应用实例2:

'use strict';

var obj = {'Joh':'56999', 'Lili':'899888'};

obj[Symbol.iterator] = function() {
  let self = this;
  let i = 0;
  const names = Object.keys(this);
  const length = names.length;

  // iterator 对象,可以理解为指针
  return {
    next() {
      let name = names[i++];
      let qq = self[name];
      return {value: {name, qq}, done: i > length}
    }
  }

}
for (let u of obj) console.log(u);

程序优化之后:

'use strict';

var obj = {'Joh':'56999', 'Lili':'899888'};

let iteratorFun = function () {
  let self = this;
  let i = 0;
  const names = Object.keys(this);
  const length = names.length;

  // iterator 对象,可以理解为指针
  return {
    next() {
      let name = names[i++];
      let qq = self[name];
      return {value: {name, qq}, done: i > length}
    }
  }
}

obj[Symbol.iterator] = iteratorFun;

for (let u of obj) console.log(u);

Symbol.iterator应用于伪数组中

'use strict';

var obj = {
  length:2,
  '0':'abc',
  '1':'ddd'
}

/*
// if this , err: obj is not iterable
for (let i of obj) {
  console.log(i);
}
*/

obj[Symbol.iterator] = [][Symbol.iterator]; // handle this first

// then
for (let i of obj) {
  console.log(i);
}

字符串实现了Symbol.iterator接口

'use strict';

console.log('Joh'[Symbol.iterator]); // [Function: [Symbol.iterator]]

for(let char of 'Lili') {
  console.log(char);
}

同样的,在ES6中在set, map 字符串都能实现 Symbol.iterator接口

js中Symbol的理解与应用 在JavaScript中,Symbol 是一种基本数据类型,它是 ECMAScript 6(ES6)引入的新特性之一。Symbol 主要用于创建具有唯一性的标识符,这些标识符不会与其他任何值冲突。 阅读详情

相关推荐

TSEND_C指令错误代码解析与实战排错指南

本文详细解析西门子PLC中TSEND_C指令的常见错误代码,包括连接建立、参数配置、资源限制和网络通信等错误类型。针对错误代码80C4等典型问题提供实战排错指南,帮助工程师快速诊断和解决工业通信中的连接故障,提升系统可靠性。

backprop5master的博客 414

js symbol类型详解以及symbol的三大应用场景

8.symbol 1.什么是symbol 什么Symbol? Symbol是ES6中新增的一种数据类型, 被划分到了基本数据类型中 基本数据类型: 字符串、数值、布尔、undefined、null、Symbol 引用数据类型: Object Symbol的作用 用来表示一个独一无二的值 格式 let xxx=Symbol(‘标识字符串’); 为什么需要Symbol? 为了避免第三方框架的同名属性被覆盖 在企业开发中如果需要对一些第三方的插件、框架进行自定义的时候 可能会因为添加了同名的属性

darabiuz的博客 2万+

SIwave仿真手册——软件基础(一)

最近在学习SIWAVE,在这里将自己的笔记整理一下,做一个专题。希望对大家有帮助,这个会持续更新的。仅限于软件操作学习,不涉及信号完整性的讨论。

luohuo9844的博客 4万+

Symbol()类型的特点及使用场景

Symbol()类型的特点及使用场景

m0_55720439的博客 1772

跨境TRS投资实战:从开户到交易的完整系统解析

本文系统解析了跨境TRS(总收益互换)投资的完整实战流程。详细阐述了TRS作为境外资金投资A股的灵活工具,如何通过其独特的合约结构绕开港股通限制,并提供杠杆效应。内容涵盖从选择机构、开通账户、资金管理到核心交易操作的全过程,并强调了构建包含策略、风控与心态的完整投资系统的重要性。

weixin_29233333的博客 314

Xiaojie雷达之路---毫米波雷达基础知识---中频信号的相位

本篇文章主要介绍毫米波雷达的基础知识中的中频信号的相位 文章目录傅里叶变换的快速回顾中频信号的相位中频信号对物体微小位移的灵敏度如何2个chirps来对一个物体的速度进行测量测量一个振动的物体 傅里叶变换的快速回顾 傅里叶变换是将一个信号从时域中转换到频域中,在时域中的一个正弦信号将在频域中产生一个峰值,在大多数情况下,在频域中的一个信号是一个复数(每个值是一个振幅和相位的向量),表示为AejθAe^{j\theta}Aejθ 在频域中峰值的相位等于正弦函数的初始相位 中频信号的相位 上一篇文章中提到,

XiaoJie的博客 1万+

什么是Symbol?在实际开发中怎么用?

Symbol 是 ECMAScript 6(ES6)引入的一种新的基本数据类型。Symbol 类型的值是唯一且不可变的。目的是确保对象属性使用唯一标识符,不会发生属性冲突的危险。

stay hungry, stay foolish 1146

MATLAB从入门到精通-APP调用simulink中的参数,并且修改,将结果返回到APP中

本次案例为以下微分方程: 其中方程的初始值为: Step1:搭建simulink文件,如下图所示: 初始值配置在积分模块中,如下图所示: Step2:制作app 操作视频: ,时长01:11 代码: 本文包括APP如何回调simulik中d的参数,以及把simulink中的仿真结果输出到APP中的绘图界面中。 核心代码如下: ...

wenyusuran的专栏 3042

web前端基础之Symbol类型的妙用

如果你在开发过程中希望定义一些不可覆盖的方法或属性,Symbol是一种有效的方式。特别是在处理一些扩展功能时,Symbol 属性不会影响到原型链上的属性。通过Symbol,可以自定义返回的类型信息,从而增强类的可识别性。唯一性Symbol值永远是唯一的,即使描述相同,创建的两个Symbol值也不会相等。防冲突:使用Symbol作为对象的属性名,不会与其他属性冲突。灵活性:可用于迭代器、枚举和魔法字符串,增强代码的健壮性和可维护性。Symbol。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 494

【26美赛D题】2026美赛数学建模(MCM/ICM)思路解析及代码分享

2026美赛D题数学建模竞赛思路解析摘要:本文针对美赛D题提供系统性解决方案,提出四层建模框架(数据层、机理层、模型层、决策层),强调逻辑闭环比模型复杂度更重要。包含通用建模步骤:指标体系构建、状态评估、动态预测和策略优化,并给出Python基础代码框架。论文建议采用七段式结构,突出从现实问题到决策方案的完整闭环。核心在于通过数据驱动方法揭示问题规律,结合多源数据整合、系统行为建模和风险评估,最终形成可落地的决策建议,体现数学建模解决实际问题的能力。

一键难忘的博客 1085

uniapp [全端兼容] - 详细实现下拉筛选菜单功能组件,下拉式筛选菜单效果,类似电商美团点击筛选项底部弹出列表点击选择后自动收起(详细示例代码,全端兼容小程序、安卓苹果app、h5网页、nvue

uni-app,vue2,vue3,向下弹出菜单包含筛选功能,日期筛选,下拉框选择器,下拉多条件筛选,下拉式筛选菜单,uniApp如何实现条件下拉筛选,Uniapp官方条件筛选组件,下拉框式条件筛选插件组件,最好用的插件组件,多端兼容,下拉菜单筛选,过滤筛选列表,下拉筛选栏,多列联动的条件筛选,下拉菜单地区和筛选,微信小程序,支付宝小程序,h5网页,移动端网站,安卓app,苹果app,nvue,uniapp所有平台兼容,下拉菜单筛选,下拉式条件筛选,下拉列表,点击排序,级联筛选,uniapp实现下拉筛选

🏆 前端领域优质创作者 1万+

前端面试题整理(八)ES6

准备面试的时候做的个人整理,比较基础,难度对标实习一面,校招应该比这难点。 你对ES6了解多少?知道哪些?(必问hhh) Promise(考过) Async/Await ES6中迭代器的使用:Generator函数 es6的继承和es5的继承有什么区别 箭头函数,以及它的this(考过) let暂时性死区(考过) ES6中map遍历的实现原理 Symbol,写一个应用实例,并说出它的其他应用场景 ...

yellowpig1210的专栏 212

基于深度学习的文字识别与检测算法研究

基于深度学习的文字识别与检测算法研究 1. 背景介绍 1.1 文字识别与检测的重要性 在当今信息时代,文字作为人类交流和传递信息的主要载体,无处不在。从日常生活中的路牌、广告牌,到办公场所的文件、合同,再到互联网上的网页、图片等

AI天才研究院 1044

22个关于ES6的最新面试题汇总整理

作者:StevenLikeWatermelonhttps://juejin.cn/post/6844903734464495623近期在复习ES6,针对ES6新的知识点,以问答形式整理一...

前端达人 8632

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ES6面试、复习干货知识点汇总(全)

近期在复习ES6,针对ES6新的知识点,以问答形式整理一个全面知识和问题汇总。(全干货,适合对ES6有一定理解的同学复习,以及ES6面试。) 一、问:ES6是什么,为什么要学习它,不学习ES6会怎么样? 答: ES6是新一代的JS语言标准,对分JS语言核心内容做了升级优化,规范了JS使用标准,新增了JS原生方法,使得JS使用更加规范,更加优雅,更适合大型应用的开发。学习ES6是成为...

前端码农 2941

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ES6新特性整理

欢迎访问我的博客https://qqqww.com/,祝码农同胞们早日走上人生巅峰,迎娶白富美~~~ 声明:本文参考文章如下: 业界大佬阮一峰老师的ES6标准入门 一位道友的[理解 JavaScript 中的 for…of 循环](https://www.cnblogs.com/m2maomao/p/7743143.html) github上的You-Dont-Know-JS Babe...

王工头的博客 7068

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

ES6知识点整理之----Symbol

1、ES6 引入了一种新的原始数据类型Symbol,表示独一无二的值。注意,Symbol函数前不能使用new命令,否则会报错。由于 Symbol 值不是对象,所以不能添加属性。基本上,它是一种类似于字符串的数据类型。 现在ES6一共有7种原始数据类型:undefined、null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)以及Symbo...

ap1005233的博客 203

整理学习——ES6的Symbol

文章目录新的原始数据类型var s = Symbol([key])参数key转换StringBooleanObject作为对象属性名属性Symbol.lengthSymbol.prototype方法Symbol.for([key])与Symbol()的区别Symbol.keyFor(sym)内置Symbols迭代Symbol.iteratorSymbol.asyncIterator正则表达式Sym...

shaliwang的博客 215

ES6前端面试题整理

ES6前端面试题整理,es5和es6的区别, ES6新增的一些特性,箭头函数,模板字符串,解构赋值,... 展开运算符,修饰器 @,Symbol,Proxy代理,使用箭头函数应注意什么?Set、Map的区别?setTimeout、Promise、Async/Await 的区别,用class 手写一个promise,es6的导入导出模块

LYFlied的博客 7940

es6知识点整理

es6知识点整理 文章目录es6知识点整理let和const变量的解构赋值模板字符串函数的扩展对象的语法糖set和mapsymbolPromiseasync/awaitclass let和const let 声明变量 不存在变量提升 不能在变量声明语句之前去使用变量 在变量声明前使用变量会报错 暂时性死区 存在暂时性死区,即在变量声明语句之前的区域和声明语句外的块级作用域下是不能使用该变量的 不允许重复声明 在声明变量之后,不能重复声明该变量,只能进行赋值操作 块级作用域 ES6中,

XDE_cat_的博客 807

ES6知识点整理

ES6-ES11

VCDA的博客 401

关于阅读 ES6- Symbol 整理的问题

1、ES6为什么引入 Symbol ? 答:ES5中的对象的属性名是字符串,属性名不能重复,否则会覆盖。 当你使用别人定义的对象,并想往里面添加新的方法, 如果方法名和对象中的属性名进行重复,就会造成覆盖的后果, 因此Symbol就是为了解决这个问题而产生的。 let obj = { [Symbol(‘a’)]: 111, [Symbol(‘a’)]: 222, } 2、Symbol类型 答:Symbol值通过Symbol()函数进行生成,可作为对象的属性名。 Symbol类型的属性名是独一无二的,不

千里之行,始于足下! 726

ES6面试、复习干货知识点汇总

点击上方程序员成长指北,关注公众号回复1,加入高级Node交流群作者:StevenLikeWatermelon https://juejin.cn/post/68449037344644...

程序员成长指北 1297

es6 filter函数的用法_ES6语法重点整理

目录:数组、函数、Symbol和对象Proxy和ReflectGenerator函数和Promise对象Class、ModuleES6简介:ECMAScript6是JavaScript语言的下一代标准,在2015年6月正式发布。其目标是使JavaScript语言可用于编写复杂的大型应用程序,成为企业级开发语言。本文参考:《ES6 标准入门》阮一峰,《JavaScript权威指南》、JavaScri...

weixin_36444911的博客 1393

ES6-Symbol 笔记 | Symbol 值作为对象的属性名 | Object.getOwnPropertySymbols()

Symbol 数据类型是ES6新出的一种数据类型,这种数据类型的特点就是没有重复的数据,可以作为Object 的 key(属性值)。 本篇博客为博主本人整理的Symbol数据类型的笔记,参考文档为《阮一峰的ECMAScript 6 入门》。

dxy1128的博客 1662

ES6 -symbol基础

一:Symbol的基本概述 ES5对象的属性都是字符串,这容易造成属性名的冲突。而ES6引入类型·Symbol就是从根本上防止属性名冲突。 他是javascript的第七个原始数据类型。前六个分别为Undefined,Null,Object,String,Number.Bealean 1.对象名可以用字符串或者symbol两种类型。而symbol类型唯一,不会和其他属性名发生冲突。 ...

qq_43955202的博客 223
上一篇: ES6知识点整理Promise的应用
下一篇: ES6知识点整理Generator的应用
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值