es6新增类型——Symbol

news/2024/7/10 23:45:26 标签: js, javascript, node.js, es6

Symbol

js数据类型:
String
Number
Null
Undefined
Object
Boolean
Symbol

Symbol:
Symbol是一种全新的数据类型,作用:产生一个独一无二的值
用法:

console.log(Symbol());//Symbol()

可以传参:这个参数(description),类型为String/Number,相当于代码注释,让开发者明白当前Symbol的意义。

var name = Symbol("姓名");

由于每一个Symbol的值都不相等,Symbol可以用来解决对象属性被覆盖的问题:

const obj  = {
	[Symbol("食物")] :"涮羊肉"
};
obj.foods = "烤羊腿"; //覆盖不了
console.log(obj);//{foods: "烤羊腿", Symbol(食物): "涮羊肉"}

let mySymbol = Symbol("地址");
let obj = {
	[ mySymbol ] : "hello"
}
console.log(obj[mySymbol]);  //hello
console.log(obj[Symbol("地址")]);//undefined

③模拟私有属性:

function Food(){
	var innerName = Symbol("inner的方法名");
	this[innerName] = function(){
		console.log("我是私有方法")
	}
	this.sayHi = function(){
		this[innerName](); //我是私有方法
		console.log('涮羊肉很好吃');
	}
}
let food = new Food();
food.sayHi();//我是私有方法    涮羊肉很好吃

Symbol.for:
Symbol.for() 并不是每次都会创建一个新的 symbol,它会首先检查给定的 参数是否已经在Symbol注册表中了,如果已经存在,则会直接返回上次存储的那个。

if(Symbol.for("address") === Symbol.for("address")){
	console.log('相等');  //相等
}

http://www.niftyadmin.cn/n/1660039.html

相关文章

mongodb数据库里能够查到数据,接口获取的返回值却是0

mongodb数据库里能够查到数据,接口获取的返回值却是0 嗨,我终于又来了,又是头秃的一段时间 今天在写项目的时候发现了一个问题,百思不得其解, 问题描述 我的后台**mongodb数据库里能够查到集合里的数据&#xff0c…

自整理html面试题

html面试题 整理了一些html面试题,希望大家都能找到心仪的工作 1.描述一下http和https **http:**超文本传输协议,无状态,无连接,基于请求和响应,不能保证数据完整性,用户离开网站后在访问需要重新发送请…

css面试题整理

css面试题整理 1.垂直居中的方法 1. 父元素:display:flex; 子元素:align-items:center2. 父元素添加伪元素: 父元素::before{content:””;height: 100%;display:inline-block;vertical-align:middle; } 子元素::before{display:inline-blo…

js、jQuery面试题整理

js、jQuery面试题整理 1.数据类型 基本类型:String、Number、boolean、null、undefined、Symbol、BigInt。 引用类型:object。里面包含的 function、Array、Date。 2.数组方法 join():数组转为字符串,可带中间符号 push()&…

DLA SQL分析函数:SQL语句审计与分析的利器

2019独角兽企业重金招聘Python工程师标准>>> 1. 简介 Data Lake Analytics最新release一组SQL内置函数,用来进行SQL语句的分析、信息提取,方便用户对SQL语句进行语法层面的审计、分析,可以应用于很多安全、数据库日志分析等场景。…

新增js常见面试题整理

新增js面试题 1.jsonp解决跨域的原理 利用script标签中的src属性,src属性不存在跨域问题,在src中引入完整的跨域引用文件,服务器输出的json数据并执行回调。 jsonp是请求后台包装好的一段json,并把数据放在回调函数中&#xff0…

混合开发笔记 —— H5js和移动安卓ios交互

H5js和移动安卓ios交互 很好懂 这个H5是基于VUE写的 https://blog.csdn.net/weixin_44696379/article/details/103327042?utm_mediumdistribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.channel_param&depth_1-utm_sourcedistribute.pc_relevan…

T5大牛带你解析:如何实现分布式技术

1.分布式事务2. 分布式锁Java 原生 API 虽然有并发锁,但并没有提供分布式锁的能力,所以针对分布式场景中的锁需要解决的方案。分布式锁的解决方案大致有以下几种:基于数据库实现基于缓存(redis,memcached 等&#xff0…