目标

  • 使用简写属性名称
  • 使用简写方法名称
  • 使用计算属性名称

问题

哪些部分是冗余的?

    const person={name:name,address:address,sayHello:function(){/*......*/},sayName:function(){/*......*/}sayAddress:function(){/*......*/}}
复制代码

简写属性名称

//ES5
const message={text:text} //将属性text赋给text变量//ES6
const message={ text }  //将属性text分配给名为text的变量
复制代码

与解构结合使用

let {count} = stateManger.getState();  // 从转态管理器中检索出count
count+=amount;
stateManger.update({count})  //设置状态管理器中的count // 实际是{count:count} 第一行取出和第三行设置,这种对称性很优雅复制代码

简写方法名称

简写方法会被视为匿名函数,而不是命名函数,这意味着不能通过函数内部的名称来引用函数

 const fn={foo(n){if(n<=2) return 1;return foo(n-1) + foo(n-2)}}fn.foo(7)  //报错,foo未定义
复制代码

只有在函数自引用的情况下,才会有关系,函数就像递归一样引用了自己

const person={sayHello:function sayHello(){console.log(123);}
}
person.sayHello(); //123
复制代码

使用this解决这个问题

//this.foo在函数的上下文中调用,如果被独立开,就没用了
const fn={foo(n){if(n<=2) return 1;return this.foo(n-1) + this.foo(n-2)}
}
const {foo}=fn;
console.log(fn.foo(7));   //13
const fn2={foo};
console.log(fn2.foo(7));  //13
const fn3={f:foo};
console.log(fn3.f(7)); //this.foo is not a function复制代码

函数使用自我引用时,请不要使用简写方法名称

计算属性名称

计算属性允许在对象字面量上使用动态属性名称

const property='color';
const flower={[property]:'red'
}
console.log(flower.property); //undefined
console.log(flower.color); //red
console.log(flower.color); //red复制代码

转载于:https://juejin.im/post/5cfd34a5e51d4550a629b248

学习新对象字面量语法相关推荐

  1. 字面量、对象字面量、函数字面量、函数定义

    #1.字面量(literal) 用于表达一个固定值的表示法,又叫常量. [JS程序执行到代码中的字面量,会立即知道它是什么类型的数据,值是多少] #2.对象字面量 语法: {k1:v1, k2:v2, ...

  2. JavaScript基础07-day09【嵌套for循环、break和continue、对象、数据类型、对象字面量、函数】

    学习地址: 谷粒学院--尚硅谷 哔哩哔哩网站--尚硅谷最新版JavaScript基础全套教程完整版(140集实战教学,JS从入门到精通) JavaScript基础.高级学习笔记汇总表[尚硅谷最新版Ja ...

  3. 对象、对象的属性、对象字面量、枚举对象中的属性、可变类型、变量和对象——JS对象

    目录 一.对象 二.对象的属性 三.对象字面量 四.枚举对象中的属性 五.可变类型 六.变量和对象 数据类型: 原始值:(不可变类型) 1.数值 Number 2.大整数 BigInt 3.字符串 S ...

  4. js对象字面量属性间相互访问的问题 和 这个问题与执行环境的关系

    对象字面量属性间无法相互访问的问题: 我曾经在定义一个对象时, 并出于复用性的考虑试图复用某些属性: // test 1 var person = {firstName : "Bill&qu ...

  5. JavaScript 对象字面量

    目录 一. 对象的基本用法 二. 遍历对象 三. 属性的类型 1. 数据类型 2. 访问浏览器属性 3.定义多个属性 4. 检测属性 5. 对象安全防护(对象拓展,对象密封,对象冻结) 四.对象在实际 ...

  6. Vue 字面量语法 vs 动态语法

    初学者常犯的一个错误是使用字面量语法传递数值: <!-- 传递了一个字符串 "1" --> <comp some-prop="1">&l ...

  7. js之字面量、对象字面量的访问、关键字in的用法

    一:字面量含义 字面量表示如何表达这个值,一般除去表达式,给变量赋值时,等号右边都可以认为是字面量. 字面量分为字符串字面量(string literal ).数组字面量(array literal) ...

  8. const的使用 || 对象增强写法 (对象字面量)

    const的使用 <!DOCTYPE html> <html lang="en"> <head><meta charset="U ...

  9. 利用对象字面量创建对象

    利用对象字面量创建对象 <!DOCTYPE html> <html lang="en"><head><meta charset=" ...

最新文章

  1. postgresql存图片字段类型_PostgreSQL 入门 | Linux 中国
  2. 为什么Kafka中的分区数只能增加不能减少?
  3. Android移动开发之【Android实战项目】DAY11-App实现截图分享qq,微信
  4. python3 和 python2 并存 重新安装pip3
  5. scala中类的继承关系
  6. The connection to adb is down, and a severe error has occured.问题解决方法小结
  7. C# 无意间写了一段线程死锁的代码
  8. 为Windows 服务器网络搬家
  9. 鸿蒙os开发者大会的时间,华为开发者大会2020时间已确定,鸿蒙2.0和EMUI 11即将到来...
  10. SQL Server将一列的多行内容拼接成一行的实现方法
  11. iOS11、iPhoneX、Xcode9 的注意点汇总
  12. Java常见异常类【整理】
  13. 惠普局域网共享打印机设置_HP LaserJet 1020局域网共享打印实操
  14. 通道布线 matlab程序,快速最优通道布线算法
  15. 人力资源管理-各类激励理论
  16. IE8 SysFader:IEXPLORE.EXE应用程序错误解决办法
  17. 论文解读:Detach and Adapt: Learning Cross-Domain Disentangled Deep Representation
  18. Web基础技术开发设计规范
  19. IE系列浏览器把application/json响应视为文件,并尝试下载
  20. 基于支付宝小程序合成海报

热门文章

  1. Day2 - Python基础2作业【文件操作--购物车程序(用户操作及商户操作)】
  2. spring-cloud-ribbon负载均衡
  3. iOS开发之圆角指定
  4. Python学习笔记--序列
  5. /usr/local/lib/libz.a: could not read symbols: Bad value(64 位 Linux)
  6. Asp.net MVC2.0系列文章-运行Web MVC2.0 Demo
  7. 初识Kubernetes(K8s):理论基础
  8. Netty 粘包 拆包 编码 解码 序列化 介绍
  9. Linux 日志管理(RHEL7)
  10. HP 服务器使用 SmartStart CD 引导安装 windows 2008 操作系统