首页 > 其他 > 详细

ES6的默认参数增强和对象增强

时间:2021-05-20 15:44:22      阅读:14      评论:0      收藏:0      [点我收藏+]
  1. 默认参数增强

    我们知道函数的默认返回值是undefined,之前如果想更改默认返回值的话需要这样做

    function fn(n){
                return n==undefined?10:n;
            };
            console.log(fn());//10
            console.log(fn(10));//10
            console.log(fn(20));//20
    

    但ES6增强默认参数后我们可以直接给形参赋值设置默认返回值,它可以是任意类型。

    function fn(n=10){
                return n;
            };
            console.log(fn());//10
            console.log(fn(10));//10
            console.log(fn(20));//20
    
  2. 对象增强

    ES6给对象增加了一个is()方法和assign()方法

    1. is()用于判断左边是否等于右边,等于返回true,不等于返回false

      但需要注意已下几种情况

      	console.log(-0 == +0);//true
              console.log(NaN == NaN)//false
      
              console.log(Object.is(-0, +0)); //false
              console.log(Object.is(NaN, NaN));//true
      
    2. assign()用于对象合并、拷贝

      先来看看它怎么使用

            let obj1 = { name: "Orange" };
            let obj2 = { age: 20 };
            let obj3 = { name: "Ann", num: 1234 };
           	console.log(Object.assign(obj1,obj2,obj3));
           	//{name:"Ann",age:20,num:1234}
           	console.log(obj1);//{name:"Ann",age:20,num:1234}
           	console.log(obj2);//{ age: 20 }
              console.log(obj3);//{ name: "Ann", num: 1234 }
      

      可以发现遇到相同属性时,后边的会覆盖前边的。再看obj1打印的值可以发现,只有obj1的发生了改变,并且obj1就等于Object.assign()返回的值。别感到奇怪,看看它如何实现的就明白为什么会是这种情况了。

      function assign(){
                  let target=arguments[0];
                  for(let i=1;i<arguments.length;i++){
                      for(let k in arguments[i]){
                          target[k]=arguments[i][k];
                      }
                  }
                  return target;
              }
              console.log(assign(obj1,obj2,obj3));
              //{name: "Ann", age: 20, num: 1234}
      

      如果想不改变第一个对象,可以这样做

      	let obj1 = { name: "Orange" };
              let obj2 = { age: 20 };
              let obj3 = { name: "Ann", num: 1234 };
              console.log(Object.assign({},obj1,obj2,obj3));
      

      这样就实现拷贝功能啦

ES6的默认参数增强和对象增强

原文:https://www.cnblogs.com/blogs-form-Ann/p/14789291.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!