美文网首页
ES6-------学习(4)对象、Symbol

ES6-------学习(4)对象、Symbol

作者: 默色留恋 | 来源:发表于2018-05-22 14:59 被阅读0次
对象赋值
let name="aaa";
let skill= 'web';
var obj= {name,skill};
console.log(obj);  //Object {name: "aaa", skill: "web"}
对象Key值构建
let key='qqq';
var obj={
  [key]:'nicai'
}
console.log(obj.qqq);//nicai
自定义对象方法

对象方法就是把兑现中的属性,用匿名函数的形式编程方法。

var obj={
    add:function(a,b){
      return a+b;
    }
}
console.log(obj.add(1,2));  //3
Object.is( ) 对象比较
var obj1 = {name:'sunny'};
var obj2 = {name:'sunny'};
console.log(obj1.name === obj2.name);//true
console.log(Object.is(obj1.name,obj2.name)); //true
区分'===' 和 'is'方法的区别 (===为同值相等,is()为严格相等。)
console.log(+0 === -0);  //true
console.log(NaN === NaN ); //false
console.log(Object.is(+0,-0)); //false
console.log(Object.is(NaN,NaN)); //true

Symbol

声明Symbol

Symbol函数前不能使用new命令,否则会报错。这是因为生成的Symbol是一个原始类型的值,不是对象

var num= Symbol();
console.log(typeof(num));//symbol

var g = Symbol('xuexi');
console.log(g);//红色字体
console.log(g.toString());//蓝色字体
Symbol在对象中的应用
注意,Symbol值作为对象属性名时,不能用点运算符。
var a = {};
var age = Symbol();
a.age = 'lili';
a[age] = 'lucy';
console.log(a.age,a[age]); //lili lucy
看一下如何用Symbol构建对象的Key,并调用和赋值。
var aaa = Symbol();
var obj={
    [aaa]:'hahaha'
}
console.log(obj[aaa]);//hahaha
obj[aaa]='wawawa';
console.log(obj[aaa]);//wawawa
for in遍历

如何改进,让m 的结果是 [{name: "a", number: 1},{name: "b", number: 2}]

let obj ={"a":1,"b":2}
let m = [];
for(let  i in obj){
    m.push({name: i, number: obj[i]})
}
 console.log(m)// [{name: "a", number: 1},{name: "b", number: 2}]
Symbol对象元素的保护作用
var obj1 = {'name':'sunny','fun':'read','age':18}
for(let obj2 in obj1){
  console.log(obj2)//name  fun  age
  console.log(obj1[obj2])//sunny  read 18

// 用Symbol来进行循环保护

var obj1 = {'name':'sunny','fun':'read'}
var age = Symbol();
obj1[age] = 18
for(let obj2 in obj1){
  console.log(obj2)//name  fun 
  console.log(obj1[obj2])//sunny  read
}
console.log(obj1)//{name: "sunny", fun: "read", Symbol(): 18}}
Symbol.for(),Symbol.keyFor()

Symbol.for机制有点类似于单例模式,首先在全局中搜索有没有以该参数作为名称的Symbol值,如果有,就返回这个Symbol值,否则就新建并返回一个以该字符串为名称的Symbol值。和直接的Symbol就有点不同了。

var s1 = Symbol.for('foo');
var s2 = Symbol.for('foo');

s1 === s2 // true

Symbol.keyFor方法返回一个已登记的Symbol类型值的key。实质就是检测该Symbol是否已创建

var s1 = Symbol.for("foo");
Symbol.keyFor(s1) // "foo"

var s2 = Symbol("foo");
Symbol.keyFor(s2) // undefined

相关文章

  • ES6-------学习(4)对象、Symbol

    对象赋值 对象Key值构建 自定义对象方法 对象方法就是把兑现中的属性,用匿名函数的形式编程方法。 Object....

  • Symbol (es6)

    1.为什么要使用Symbol 2.Symbol的基本使用 3.Symbol值作为key 4.遍历对象中的Symbo...

  • Object相关方法

    getOwnPropertySymbols获取对象中所有Symbol类型的keyconst a = Symbol(...

  • Symbol

    1、window.Symbol 2、不允许new Symbol 3、symbol() !== symbol() 4...

  • 五:前端笔记(2)

    1.三点运算符 2.对象的简写方式 3.Promise对象 4.Symbol 5.箭头函数

  • ES6标准入门 摘要 (Symbol)

    Symbol 原始数据类型Symbol,表示独一无二的值,Symbol 值通过Symbol函数生成。这就是说,对象...

  • JS-数据类型和Symbol

    7个基本类型:4基2空1对象 number string symbol boolean null undefin...

  • 【JS ES6】Object

    获取对象数值 判断是否相同 获取对象长度 Symbol

  • ES6 Symbol类型

    每个Symbol实例都是唯一的 应用场景: 使用Symbol来作为对象属性名(key) Symbol类型的key是...

  • Vim 让每一个键都拥有灵魂

    本文 插件 vimrc通用配置 名词简介 范围文本对象 a{symbol}, I{symbol} vim 后台待命...

网友评论

      本文标题:ES6-------学习(4)对象、Symbol

      本文链接:https://www.haomeiwen.com/subject/ayihjftx.html