当前位置: 首页 > news >正文

威海做网站的上海购房网官网

威海做网站的,上海购房网官网,新沂网站设计,网站的页面结构ES6-Symbol 类型 ES5 除类数组对象#xff08;类数组对象名可以为数字#xff0c;对象必须有 length 属性#xff0c;可以用数组下标的方式访问对象属性#xff0c;但不能通过点的方式访问#xff09;外#xff0c;对象属性名都是字符串#xff0c;这很容易造成属性名的…ES6-Symbol 类型 ES5 除类数组对象类数组对象名可以为数字对象必须有 length 属性可以用数组下标的方式访问对象属性但不能通过点的方式访问外对象属性名都是字符串这很容易造成属性名的冲突。而且 JavaScript 是弱类型语言属性名冲突不会报错处于代码执行顺序后面的属性值会覆盖前面的属性值属性值容易被篡改这样对象的属性就不能保证是我们想要的。 ES6 引入了Symbol数据类型很好地解决了对象属性名冲突的问题。 Symbol表示 独一无二的值 它是原始数据类型不能用 new ES6之后JavaScript就有了7种数据类型分别是Number 、String 、Boolean 、null 、undefined 、Object 、Symbol 基本用法 Symbol 函数栈不能用 new 命令因为 Symbol 是原始数据类型不是对象。可以接受一个字符串作为参数为新创建的 Symbol 提供描述用来显示控制台或者作为字符串的时候使用便于区分。 let name Symbol(name); console.log(name); // Symbol(name); console.log(typeof name); // symbol特点 Symbol 函数栈不能用 new 命令因为 Symbol 是原始数据类型不是对象 Symbol 表示独一无二的值因此带有相同参数的两个 Symbol 值也不相等 // 没有参数的情况 let name1 Symbol(); let name2 Symbol();name1 name2 // false// 有参数的情况 let name1 Symbol(foo); let name2 Symbol(foo);name1 name2 // falseSymbol 不能进行隐式类型转换 let name Symbol(foo); console.log(你好 name); // 报错Cannot convert a Symbol value to a string(无法将symbol值转换为字符串)console.log(你好${name}); // 报错Cannot convert a Symbol value to a string(无法将symbol值转换为字符串)console.log(name 1); // 报错Cannot convert a Symbol value to a number(无法将symbol值转换为数值)Symbol 值可以显式转为字符串 let name Symbol(foo); console.log(String(name)); // Symbol(foo) console.log(name.toString); // Symbol(foo)Symbol 值不能转化为数字 let name Symbol(foo); console.log(Number.name); // 报错Cannot convert a Symbol value to a number(无法将symbol值转换为数值)Symbol 值可以转换为布尔值 let name Symbol(foo); console.log(Boolean(name)); // true console.log(!name); // falseSymbol 应用场景 作为对象属性名 用 Symbol 声明的对象名不能用 key.value 的形式获取对象的属性值要用 [ ]原因 1. ES5中对象 .(点) 运算符获取的属性名是字符串 用 key.value 的形式会将属性名识别为字符串新建一个属性名给对象无法和 Symbol 属性区别 2. 方括号中带双引号的属性名表示字符串属性不带双引号的属性名表示 Symbol 属性一次区别二者 let sy Symbol();// 写法 1 let syObject {}; syObject[sy] symbol; console.log(syObject); // {Symbol(): symbol}// 写法 2 let syObject {[sy]: symbol }; console.log(syObject); // {Symbol(): symbol}// 写法 3 let syObject {}; Object.defineProperty(syObject, sy, {value: symbol}); console.log(syObject); // {Symbol(): symbol}// 万万不能用点 syObject[sy]; // symbol; syObject.sy; // undefined // 因为 syObject.sy syObject[sy]Symbol 值作为属性名时该属性是公有属性不是私有属性可以在类的外部访问。但是不会出现在 for...in、for...of 的循环中也不会被 Object.keys() 、Object.getOwnPropertyNames() 返回。如果要读取一个对象的 Symbol 属性可以通过 Object.getOwnPropertySymbols() 和 Reflect.ownKeys() 取到。 let sy Symbol(); let syObject {}; syObject[sy] symbol; console.log(syObject); // {Symbol(): symbol}for (let i in syObject) {console.log(i); // 无输出 }Object.keys(syObject); // [] Object.getOwnpropertyNames(syObject); // [] Object.getOwnpropertySymbols(syObject); // [Symbol()] Reflect.ownKeys(syObject); // [Symbol()]Symbol的方法 Symbol.for() 作用用于将描述相同的 Symbol 变量指向同一个 Symbol 值 let a1 Symbol.for(a);let a2 Symbol.for(a);a1 a2 // truetypeof a1 // symboltypeof a2 // symbollet a3 Symbol(a);a1 a3 // falseSymbol() 和 Symbol.for() 的相同点 它们定义的值类型都为 “Symbol”; Symbol() 和 Symbol.for() 的不同点 Symbol() 定义的值每次都是新建即使描述相同值也不相等Symbol() 定义的值会先检查给定的描述是否已经存在如果不存在才会新建一个值并把这个值登记在全局环境中供搜索Symbol.for() 定义相同描述的值时会被搜索到描述相同则他们就是一个值。 Symbol.keyFor() 作用用来检测该字符串参数作为名称的 Symbol 值是否已被登记返回一个已登记的 Symbol 类型值的 key let a1 Symbol.for(a); Symbol.keyFor(a1); // a let a2 Symbol(a); Symbol.keyFor(a2); // undefined// a1已经用Symbol.for()登记过因此返回的key为a,而a2没有被登记因此返回undefinedSymbol的属性 Symbol.prototype.descirption description用于返回 Symbol 数据的描述 // Symbol() 定义的数据 let a Symbol(acc); console.log(a.description); // acc Symbol.keyFor(a); // undefined// Symbol.for() 定义的数据 let a1 Symbol.for(acc); console.log(a1.description); // acc Symbol.keyFor(a1); // acc// 未指定描述的数据 let a2 Symbol.(); console.log(a1.description); // undefineddescription属性和Symbol.keyFor()方法的区别是description 能返回所有 Symbol 数据类型的描述而 Symbol.keyFor() 只能返回 Symbol.for() 在全局注册过的描述。
http://www.zqtcl.cn/news/621115/

相关文章:

  • 门户网站建设存在的问题和差距无锡做智能网站
  • 受欢迎的常州做网站网站制作ppt
  • 物流网站建设实例 天堂资源帝
  • 太原建设厅官方网站wordpress 导入工具
  • 做网站树立品牌形象建设了网站后怎么用谷歌引流
  • 专业公司网站建设建设人才库网站
  • 怎么自己做直播网站吗手机免费建站app
  • 惠州规划建设局网站seo网站关键词排名优化公司
  • 关键词检测百度seo一本通
  • 做效果图的外包网站徐州低价seo
  • xp系统中做网站服务器吗网站设计版权
  • 化妆品网站建设经济可行性分析怎么做好网站
  • 软件企业网站建设栏目结构图服务公司有哪些
  • 郑州专业做淘宝网站推广哪些公司需要网站开发工程师
  • 如何为企业做网站单页网站推广
  • 做公众号封面图的网站凡客精选app
  • 张家界做旅游网站网业小说畅读服务
  • 短租网站那家做的好网络设计工作好找吗
  • 企业建网站哪家好网络书签 wordpress
  • 网站策划的工作职责有关网站开发的创意
  • 上国外网站dns如何免费做网站推广
  • wordpress导航站的源码网页设计与制作微课教程第4版李敏
  • 建站的好公司wordpress 小工具 调用
  • 郑州高考网站建设wordpress调用多个底部
  • 在线做爰直播网站dw制作网页步骤
  • 视频网站 php源码深圳高端网站建设招聘
  • 企业网站服务费怎么做记账凭证那个网站上有打码的任务做
  • 沈阳做网站优化的公司长春网络建站模板
  • 秒收网站鞍山58同城
  • 模板网站建设方案wordpress系统在线升级