ES6 Symbol类型 附带:Proxy和Set

七种数据类型

·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] = ‘File1‘;

console.log("person[name]",person[name]);

}

//file2.js

{

let name = Symbol();

person[name] = ‘File2‘;

//可以在局部变量{ }里临时重写,但是在全局内不变

console.log(‘person[name]‘,person[name]);

}

console.log(‘person[name]‘,person[name]);

Proxy 代理

var user = new Proxy({},{

get:function(obj,prop)

{

if(prop == ‘fullname‘)

return obj.fname + ‘ ‘ + obj.lname;

},

/*

set:function(obj,prop){

}

*/

})

user.fname = ‘Bob‘;

user.lname = ‘Wood‘;

console.log("user.fullname:",user.fullname);

console.log("user.age:",user.age);

set

var arr = [1,2,3,3];

var s = new Set([1,2,3,3]);

s.add(4);

console.log("s.size",s.size);

console.log("s:",s);

s.delete(2);

console.log("s",s);

console.log("s.has(5)",s.has(5));

s.has(5);

原文地址:https://www.cnblogs.com/eret9616/p/8949842.html

时间: 2024-10-24 14:59:29

ES6 Symbol类型 附带:Proxy和Set的相关文章

ES6中的Symbol类型

前面的话 ES5中包含5种原始类型:字符串.数字.布尔值.null和undefined.ES6引入了第6种原始类型--Symbol ES5的对象属性名都是字符串,很容易造成属性名冲突.比如,使用了一个他人提供的对象,想为这个对象添加新的方法,新方法的名字就有可能与现有方法产生冲突.如果有一种机制,保证每个属性的名字都是独一无二的,这样就从根本上防止了属性名冲突.这就是ES6引入Symbol的原因,本文将详细介绍ES6中的Symbol类型 创建 Symbol 值通过Symbol函数生成.这就是说,

es6 之 Symbol 类型

ES6 引入了一种新的原始数据类型 Symbol,表示独一无二的值.它是 JavaScript 语言的第七种数据类型,前六种是:Undefined.Null.布尔值(Boolean).字符串(String).数值(Number).对象(Object). 符号(symbol)是一种特殊的.不可变的数据类型,可以作为对象属性的标识符使用.生成 Symbol 值的最简单的方式就是直接通过 Symbol 函数生成. let sym = Symbol(); console.log(sym); // Sym

ES6笔记(4)-- Symbol类型

系列文章 -- ES6笔记系列 Symbol是什么?中文意思是标志.记号,顾名思义,它可以用了做记号. 是的,它是一种标记的方法,被ES6引入作为一种新的数据类型,表示独一无二的值. 由此,JS的数据类型多了一位成员: Number.String.Boolean.undefined.Object.Symbol 一.简单使用 1. 声明 类似字符串String的声明方式 var str = 'str'; Symbol的声明方式类似,它调用构造函数Symbol() var s = Symbol();

ES6新特性:Proxy代理器

ES6新特性:Proxy: 要使用的话, 直接在浏览器中执行即可, node和babel目前还没有Proxy的polyfill;,要使用的话,直接在浏览器中运行就好了, 浏览器的兼容性为:chrome>39或者firefox>18: Proxy的基本使用: Proxy如其名, 它的作用是在对象和和对象的属性值之间设置一个代理,获取该对象的值或者设置该对象的值, 以及实例化等等多种操作, 都会被拦截住, 经过这一层我们可以统一处理,我们可以认为它就是“代理器” ; Proxy是一个构造函数, 使

Es6 Symbol.iterator

Symbol.iterator 为每一个对象定义了默认的迭代器.该迭代器可以被 for...of 循环结构使用. --描述 当需要迭代一个对象的时候(比如在 for...of 循环的开始时),它的 @@iterator 方法就会被调用一次(0 个参数),同时返回的迭代器将被用来获取被迭代出来的值. 一些内建类型拥有默认的迭代器行为,其他类型(如 Object )则没有.下表中的内建类型拥有默认的@@iterator方法: Array.prototype[@@iterator]() TypedAr

ES6——Symbol数据类型

什么是 Symbol ? Symbol 表示独一无二的值,他是js中的 第七种数据类型. 基本的数据类型:null, undefined number boolean string symbol 引用数据类型:Object let s1=Symbol(); let s2= Symbol(); console.log(typeof s1); //symbol console.log(s1===s2) //false; Symbol 函数不能使用 new 否则会把错,因为 Symbol 是一个原始类

ES6系列_13之Proxy进行预处理(简单学习)

1.理解什么是预处理? 当我们在操作一个对象或者方法时会有几种动作,比如:在运行函数前初始化一些数据,在改变对象值后做一些善后处理.这些都算钩子函数,Proxy的存在就可以让我们给函数加上这样的钩子函数. Proxy进行预处理可以简单理解为:执行方法前,先预处理代码(预热工作). 2.对比引入Proxy 我们先来回顾一下定义对象的方法. var obj={ add:function(val){ return val+100; }, name:"小红" }; console.log(ob

ES6入门系列 ----- 使用Proxy 实现观察者模式

观察者模式是指函数自动观察数据对象的变化, 一旦对象有变化,函数就会自动执行. 它定义了一种一对多的依赖关系,我们用Proxy来实现一个简单的观察者模式(PS: 初学我们认为 观察者模式 == 发布订阅模式, 其实它们有点不同). 例子: const callbacks = new Set();const observe = fn => callbacks.add(fn);const observable = obj => new Proxy(obj, {set}); function set

ES6(十一)Proxy和Reflect

Proxy let obj = { time: '2019-01-01', name: 'ronle' } let monitor = new Proxy(obj, { // 拦截对象属性的读取 get (target, key) { return target[key].replace('2019', '2020') }, // 拦截对象设置属性 set (target, key, value) { // 只有key等于name才修改 if (key === 'name') { return