标签:很多 als desc esc 字符串 === 对象 scribe pre
Symbol 象征; 符号;
var kk={a:1,b:2};
var jj={b:3,c:4};
//因为 两个对象中 有属性名一样 就会被覆盖
Object.assign(kk,jj);
console.log(kk); //{a: 1, b: 3, c: 4} b:2 被覆盖
//Symbol 就是返回一个唯一的值 让这个值做属性名 就不会发生覆盖的情况了
Symbol 是一中新的数据类型,表示独一无二的值。
// Symbol 类型是类似字符串的一种类型 没有属性名
let ss=Symbol();
let ss1=Symbol();
console.log(ss); //Symbol() Symbol类型的就是一个Symbol()
console.log(typeof ss); //Symbol
console.log(ss1); //Symbol() ss和ss1都一样
console.log(ss===ss1); // false 但是他们不相等 比较是唯一的
let sss=Symbol("aa");
console.log(sss); //Symbol(aa) 有很多个Symbol()怎么办(就用参数 来描述这些Symbol())
let name=Symbol();
var kk={
name:"ag", //这个时候的name默认是字符串 因为属性名默认就是字符串
[name]:"ak",//使用 Symbol类型做属性名时 必须用中括号[]括起来
}
console.log(kk.name); //ag 使用点是访问不到 Symbol类型的
console.log(kk[name]); //ak Symbol类型就类似一个变量 访问时需要[]
console.log(kk["name"]); //ag 如果中括号里面是一个字符串的话 访问的也不是symbol类型的
标签:很多 als desc esc 字符串 === 对象 scribe pre
原文地址:https://www.cnblogs.com/myniu/p/11777249.html