当前位置: 首页 > news >正文

前端基础1-6 :es6

点击跳转,详细查看es6

const常量

const LIMIT = 10;
const OBJ_MAP = {a: 'A',A: 'a'
}

1. 不允许重复声明赋值

    var arg1 = 'a'arg1 = 'aa'// 常量 - ES5Object.defineProperty(window, 'arg2', {value: 'aaa',writable: false})// ES6const arg2 = 'aaa'

2. 块级作用域

    if (true) {console.log(arg1)var arg1 = 'aa'}console.log(arg1)if (true) {const arg1 = 'aa'}// dead zone => 先声明赋值 再使用

3. const 和 let

    // 会被改变的对象,到底用const还是let?const obj = {teacher: 'aa',date: '20240530'}obj.teacher = ''const obj2 = obj// 1. 栈 + 2. 堆// 能用const的地方,都用const// 面试:如何对一个对象进行常量化?// 破局 - Object.freeze()Object.freeze(obj)// 追问:只能冻结根层?const obj = {teacher: 'aa',date: '20240530',course: {course1: 'basic',course2: 'trial'}}function deepFreeze(obj) {Object.freeze(obj)(Object.keys(obj) || []).forEach(key => {if (typeof obj[key] === 'object') {deepFreeze(obj[key])}})}

deconstruction 解构 - 解开对象结构

    const obj = {teacher: 'yy',course: 'es'}const {teacher,course} = obj;const arr = [1, 2, 3, 4, 5]const [a, b, c, d, e] = arr;let a = 1;let b = 2;[b, a] = [a, b]

arrow_function 箭头函数

    // 传统函数function test(a, b) {return a + b;}const test = function(a, b) {return a + b;}const test = (a, b) => {return a + b;}const test = (a, b) => a + b;const test = x => {}

上下文

    const obj2 = {teacher: 'aa',course: 'es',table: ['black', 'red'],getTeacher: function() {return this.teacher;},getTable: () => {// 不存在独立上下文}}

class 助力js更加具有面向对象的形式 - 类

    // 传统类型的对象 - functionfunction Course(teacher, course) {this.teacher = teacherthis.course = course}Course.prototype.getCourse = function() {return `teacher is ${this.teacher}`;}const course = new Course('aa', 'ES')const course1 = new Course('aa1', 'ES2')// ES6class Course {constructor(teacher, course) {this.teacher = teacherthis.course = course}getTeacher() {return ''}static getCourse() {}}const course = new Course('aa', 'ES')course.getTeacher()Course.getCourse()

追问

class 的类型是什么?

Function => Object => null

class的prototype

    Course.prototype

class 函数对象的属性

    course.hasOwnProperty('teacher')
// 1. 如何建立只读变量class Course {constructor(teacher, course) {this._teacher = teacherlet _course = 'es'this.getCourse = () => {return _course}}// get teacher() {//     return this._teacher// }}class Course {#course = 'es6'set course(val) {if (val) {this.#course = val}}}// 3. 封装核心 - 适配器模式// {//     name: {//         value: 'lodash',//         tag: 124,//         name: 'es6'//     }// }class utils {constructor(core) {this._main = corethis._name = 'myName'}get name() {return {...this._main.name,name: `${this._name}`}}set name(val) {this._name = val}}

相关文章:

  • 【Unity知识点详解】Addressables的资源加载
  • K210视觉识别模块学习笔记1:第一个串口程序_程序烧录与开机启动
  • 代码审计(工具Fortify 、Seay审计系统安装及漏洞验证)
  • 记一次服务器数据库被攻击勒索
  • 【Linux 网络】网络基础(三)(其他重要协议或技术:DNS、ICMP、NAT)
  • 数字经济讲师培训师教授唐兴通谈新质生产力数字化转型高质量发展AI人工智能大模型大数据经信委大数据管理局
  • Chrome谷歌浏览器如何打开不安全页面的禁止权限?
  • Keil 5恢复默认布局,左边状态栏
  • 基于java的CRM客户关系管理系统(二)
  • .NET 快速重构概要1
  • FPGA高端项目:FPGA解码MIPI视频+图像缩放+视频拼接,基于MIPI CSI-2 RX Subsystem架构实现,提供4套工程源码和技术支持
  • element-plus 使el-dropdown只显示当前选择节点
  • 【ARM-Linux篇】u-boot编译
  • 关于IO口的自定义通信协议设计
  • org.apache.kafka.clients.consumer.CommitFailedException
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • [LeetCode] Wiggle Sort
  • 【前端学习】-粗谈选择器
  • CentOS 7 防火墙操作
  • HashMap ConcurrentHashMap
  • HTTP 简介
  • Intervention/image 图片处理扩展包的安装和使用
  • JavaScript异步流程控制的前世今生
  • PHP的Ev教程三(Periodic watcher)
  • SpiderData 2019年2月13日 DApp数据排行榜
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 初识 webpack
  • 对JS继承的一点思考
  • 前端技术周刊 2019-01-14:客户端存储
  • 写给高年级小学生看的《Bash 指南》
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • ​【已解决】npm install​卡主不动的情况
  • ​Java基础复习笔记 第16章:网络编程
  • # Python csv、xlsx、json、二进制(MP3) 文件读写基本使用
  • #周末课堂# 【Linux + JVM + Mysql高级性能优化班】(火热报名中~~~)
  • ()、[]、{}、(())、[[]]命令替换
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (poj1.2.1)1970(筛选法模拟)
  • (未解决)macOS matplotlib 中文是方框
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)机器学习的数学基础(1)--Dirichlet分布
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • . Flume面试题
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .Net FrameWork总结
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .net访问oracle数据库性能问题
  • .NET基础篇——反射的奥妙
  • .py文件应该怎样打开?
  • /etc/fstab和/etc/mtab的区别