ES6 (2)

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title>章鱼先生</title>
</head>
<body>
<script>
    /*
    * 数组的扩展
    * */
    {
        //扩展运算符   ...
        //拆开数组
        //console.log(...[1, 2, 3, 4, 5]);
        //扩展运算符和函数的使用
        //function fun(array,item){
        //    array.push(...item);
        //}
        //let array=[];
        //fun(array,[1,2,3,4,5]);
        //console.log(array);

        //扩展运算符  替换apply  args  数组型
        //function f1(a,b,c){
        //    console.log(a, b, c);
        //}
        //let m=[1,2,3];
        //f1.apply(null,m);
        //f1(...m);

        //扩展运算符   复制数组  引用空间不一样
        //let a=[1,2];
        //let c=a;//普通复制  引用空间一致
        //let b= [...a];
        //b[0]="a";
        //c[0]="b";
        //console.log(a, b,c);

        //扩展运算符  合并数组
        //let a=[1,2];
        //let b=[3,4];
        //let c= [...a,...b];
        //console.log(c);

        //数组的扩展方法   Array.from();   讲类数组对象转化为正真的数组
        //let a={
        //    0:"a",
        //    1:"b",
        //    length:2
        //};
        //console.log(Array.from(a));

        //数组的扩展方法   Array.of()   将一组值转换为数组
        //console.log(Array.of(1, 2, 3, 4));

        //find()  找出数组里面满足条件的第一个值直接返回
        //let a=[1,2,3,4,5,6];
        //console.log(a.find((n)=>{
        //            return n%2==0;
        //}));
        //console.log(a.findIndex((value,index,arr)=>{
        //        return value%7==0;
        //}));
    }

    /*
    * 对象的扩展
    * ES6 允许直接在对象内部声明属性和方法
    * */
    {
        //let obj={
        //    name:"张三",
        //    sleep(){
        //        console.log("wozai");
        //    }
        //};
        //obj.sleep();

        //ES6允许  通过字面量定义对象属性
        //let _sex="sex";
        //let a="age";
        //let b="Now";
        //let obj={
        //    name:"毛豆",
        //    [_sex]:"男",
        //    [a+b]:20
        //};
        //console.log(obj);
        //console.log(obj['name']);
        //console.log(obj.name);
        //console.log(obj[_sex]);

        //let obj={
        //    name:"张三",
        //    sex:"男"
        //};
        //console.log(Object.getOwnPropertyDescriptor(obj,"name"));
        /*writable: true   可读写
        enumerable: true   可枚举
        configurable: true   可配置*/
        //修改上面的配置
        //Object.defineProperty(obj,"sex",{
        //    value: "李四",
        //    writable: true,
        //    enumerable: true,
        //    configurable: true
        //});

        //Object.keys()   返回当前对象的键   enumerable  为false则会忽略该属性
        //console.log(Object.keys(obj));

        //Object.values()   返回当前对象的值
        //console.log(Object.values(obj));

        //Object.entries()   返回当前对象的键值    返回一个数组
        //console.log(Object.entries(obj));

        //_proto_   获取当前对象的原型
        //console.log(obj.__proto__);

        //let ob={
        //    eat(){
        //        console.log("吃饭");
        //    }
        //};
        //设置对象的原型
        //Object.setPrototypeOf(obj,ob);
        //console.log(obj.__proto__);

        //获取当前对象的原型==_proto_
        //console.log(Object.getPrototypeOf(obj));

        //Object.is()   严格判断两个对象是否相等  类似===
        //let a={};
        //let b={};
        //let c=a;
        //console.log(Object.is(1, 1));//true
        //console.log(Object.is(null, null));//true
        //console.log(Object.is([], []));//false
        //console.log(Object.is({}, {}));//false
        //console.log(Object.is(a, c));//true

        //Object.assign()   合并对象
        //let ob1={
        //    name:"张三"
        //};
        //let ob2={
        //    name:"李四",
        //    sex:"男"
        //};
        //console.log(Object.assign({}, ob1, ob2));
        //let c=Object.assign({},ob1);
        //console.log(c);

        //Object.assign()   复制对象   浅复制  内里还是同一个引用空间
        //let obj={
        //    a:1,
        //    b:2,
        //    c:{
        //        m:2
        //    }
        //};
        //let b=Object.assign({},obj);
        //obj.a=10;
        //obj.c.m=30;
        //console.log(obj, b);

        //ES6  扩展的 super  指向当前对象的原型对象   this  指向当前对象
        //只能写在对象的方法内部
        let proto={
            sleep(){
                console.log("睡觉");
            }
        }
        let preson={
            name:"张三",
            logproto(){
               super.sleep();
            }
        }
        Object.setPrototypeOf(preson,proto);
        preson.logproto();
    }
</script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值