ES6(六)
10. 对象
① 对象赋值
ES6允许把声明的变量直接赋值给对象。
let name="q";
let skill= 'qq';
var obj= {name,skill};
console.log(obj);  //Object {name: "q", skill: "qq"}
②.对象Key值构建
有时候我们会在后台取出key值,而不是我们前台定义好的,这时候我们如何构建我们的key值那。
比如我们在后台取了一个key值,然后可以用[ ] 的形式,进行对象的构建。
let key='skill';
var obj={
    [key]:'web'
}
console.log(obj.skill);///web
③.自定义对象方法
对象方法就是把兑现中的属性,用匿名函数的形式编程方法。这个在以前就有应用,我们这里只是简单的复习一下。
var obj={
    add:function(a,b){
        return a+b;
    }
}
console.log(obj.add(1,2));  //3
④.Object.is( ) 对象比较
对象的比较方法,以前进行对象值的比较,经常使用===来判断,比如下面的代码:
var obj1 = {name:'jspang'};
var obj2 = {name:'jspang'};
console.log(obj1.name === obj2.name);//true
那ES6为我们提供了is方法进行对比。
var obj1 = {name:'jspang'};
var obj2 = {name:'jspang'};
console.log(obj1.name === obj2.name);//true
console.log(Object.is(obj1.name,obj2.name)); //true
区分=== 和 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
这太诡异了,我要怎么记忆,,===为同值相等,is()为严格相等。
⑤.Object.assign( )合并对象
操作数组时我们经常使用数组合并,那对象也有合并方法,那就是assgin( )。
看一下啊具体的用法。
var a={a:'q'};
var b={b:'qq'};
var c={c:'web'};
let d=Object.assign(a,b,c)
console.log(d);////{a: "q", b: "qq", c: "web"}
11. Symbol,它的意思是全局标记
①.Symbol的打印
我们先声明一个Symbol,然后我们在控制台输出一下。
var g = Symbol('jspang');
console.log(g);
console.log(g.toString());
这时候我们仔细看控制台是有区别的,没有toString的是红字(symbol类型),toString的是黑字(字符类型)。
②.Symbol在对象中的应用
看一下如何用Symbol构建对象的Key,并调用和赋值。
var q= Symbol();
var obj={
    [q]:'qq'
}
console.log(obj[q]);//qq
obj[q]='web';
console.log(obj[q]);//web
③.Symbol对象元素的保护作用
在对象中有很多值,但是循环输出时,并不希望全部输出,那我们就可以使用Symbol进行保护。
没有进行保护的写法:
var obj={name:'q',skill:'web',age:18};
for (let item in obj){
console.log(obj[item]);//q web 18
}
现在我不想别人知道我的年龄,这时候我就可以使用Symbol来进行循环保护。
let obj={name:'q',skill:'web'};
let age=Symbol();
obj[age]=18;
for (let item in obj){
    console.log(obj[item]);//q web
} 
console.log(obj[age]); //18
                    
                
                
            
        
浙公网安备 33010602011771号