第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

【金秋打卡】第23天對(duì)象的新增方法

標(biāo)簽:
前端工具

一、课程名称:前端工程师2022版

二、课程章节:ES6语法扩展-ES6的新增方法

三、课程讲师:Alex

四、课程内容

1、Object.assign()

(1)作用:用于合并对象,从右往左合并,合并完一个再向左合并,直至合并到目标对象

(2)与展开运算符的区别:虽然使用Object.assign()的结果和使用展开运算符的结果表面上是一样的,但是具体原理不同,展开运算符是将后面的数组覆盖前面的数组,而Object.assign()是将后面的参数合并到第一个参数中,返回的就是合并后的对象,最终输出的结果是会和括号中前面一个参数相等的

 https://img4.sycdn.imooc.com/6370c73600017aa304200237.jpg

(3)基本用法:可以合并多个对象

      console.log(Object.assign(apple, pen));

      //{color: '黑色', shape: '圆柱形', taste: '甜', use: '写字'}

      console.log(apple);

      //{color: '黑色', shape: '圆柱形', taste: '甜', use: '写字'}

      console.log(Object.assign(apple, pen)===apple);   //true

    //   console.log({ ...apple, ...pen });

    //   //{color: '黑色', shape: '圆柱形', taste: '甜', use: '写字'}

    //   console.log({ ...apple, ...pen }===apple);//false

如果不想对第一个参数做改变,就可以在最前面放一个空的对象,因为Object.assign()没有限制参数的数量

    console.log(Object.assign({},apple, pen));

    // {color: '黑色', shape: '圆柱形', taste: '甜', use: '写字'}

    console.log(apple);

    // {color: '红色', shape: '圆形', taste: '甜'}

(4)注意事项

Object.assign(目标对象,源对象1,源对象2....)

1)基础数据类型作为源对象(即基本数据类型不作为第一个参数),与对象的展开类似,先转换成对象,再合并,所以一般情况下,基本数据类型作为源对象展开后是没有属性的,最后会输出空数组, 唯一比较特别的是字符串,它会被转成对象,属性值就是索引值

      console.log(Object.assign({}, undefined)); //{}

      console.log(Object.assign({}, null)); //{}

      console.log(Object.assign({}, 1)); //{}

      console.log(Object.assign({}, true)); //{}

      // 唯一比较特别的是字符串,它会被转成对象,属性值就是索引值

      console.log(Object.assign({}, "str")); //{0: 's', 1: 't', 2: 'r'}

2)同名属性的替换:后面的属性直接覆盖前面的

 https://img1.sycdn.imooc.com/6370c72c0001623c04200237.jpg

      const apple = {

        color: ["红色", "黄色", "绿色"],

        shape: "圆形",

        taste: "甜",

      };

      const pen = {

        color: ["黑色", "银色"],

        shape: "圆柱形",

        use: "写字",

      };

      console.log(Object.assign({},apple, pen));

    // {color: Array(2), shape: '圆柱形', taste: '甜', use: '写字'}

(5)应用

合并默认参数与用户参数

      const logUser = (userOptions) => {

        const DEFAULTS = {

          username: "ZhangSan",

          age: 0,

          sex: "male",

        };

        const options = Object.assign({}, DEFAULTS, userOptions);

        console.log(options);

      };

      //什么都不传,相当于传了一个undefined,根据注意事项第一点,最后结果不会报错,而是直接输出默认参数,所以不再需要在设置函数时让userOptions={},也就相当于const options = Object.assign({}, DEFAULTS, undefined);//DEFAULTS

      logUser(); //{username: 'ZhangSan', age: 0, sex: 'male'}

      logUser({}); //{username: 'ZhangSan', age: 0, sex: 'male'}

      logUser({ username: "LiSi" }); //{username: 'LiSi', age: 0, sex: 'male'}

 

2、Object.keys()、Object.values()、Object.entries()

(1)作用:Object.keys()用于获取对象的键、Object.values()用于获取对象的值、Object.entries()用于获取对象的键和值

(2)基本用法:

 https://img1.sycdn.imooc.com/6370c72200011aab04200237.jpg

      const person = {

        name: "Alex",

        age: 18,

      };

      console.log(Object.keys(person)); //(2) ['name', 'age']

      console.log(Object.values(person)); //(2) ['Alex', 18]

      console.log(Object.entries(person)); //(2) [Array(2), Array(2)]

(3)与数组类似方法的区别

1)调用方式不同:对象时构造函数的方法,需要通过构造函数来调用,然后把对象作为参数传进去,而数组是实例的方法,实例对象就可以直接调用,而对象就没有这个方法,使用对象调用会输出undefined

 https://img2.sycdn.imooc.com/6370c71a0001350004200237.jpg

2)返回值不同:对象返回的结果都是数组,数组返回的结果统一都是遍历对象Iterator

3)数组的keys()、values()、entries()等方法和Object.keys()都是ES6新增的,而Object.values()、Object.entries()是ES6之后新增的,所以它们的格式会有所不同

(4)使用for...of循环遍历对象

需要注意的是这三个方法并不能保证顺序一定是你看到的样子,这一点和for in 是一样的,如果对顺序有严格要求,那么就不要使用for...in或for...of,而是自己设置遍历顺序

      for (const key of Object.keys(person)) {

        console.log(key);

      }

      for (const value of Object.values(person)) {

        console.log(value);

      }

      for (const entries of Object.entries(person)) {

        console.log(entries);

      }

      for (const [key,value] of Object.entries(person)) {

        console.log(key,value);

      }

五、课程心得

今天学习了对象的新增方法,Object.assign()用于合并对象,Object.keys()、Object.values()、Object.entries()用于获取对象的键、值、键和值,Alex老师讲的很清晰易懂,期待后面的课程。

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消