ES6中的类和符号

JS——ES6、ES7、ES8、ES9、ES10介绍 ES全称ECMAScript,ECMAScript是ECMA制定的标准化脚本语言。目前JavaScript使用的ECMAScript版本为ECMA-417。关于ECMA的最新资讯可以浏览ECMA news查看。ECMA规范最终由TC39敲定。TC39由包括浏览器厂商在内的各方组成,他们开会推动JavaScript提案沿着一条严格的发展道路前进。Stage 0: strawman——最初想法的提交。 阅读详情

一、类

在js语言中,生成实例对象的传统方法是通过构造函数。例如:

function Animal(type,name,age,sex){
    this.type = type
    this.name = name
    this.age = age
    this.sex = sex
}
Animal.prototype.print = function(){
     console.log(`【种类】:${this.type}`)
     console.log(`【名字】:${this.name}`)
     console.log(`【年龄】:${this.age}`)
     console.log(`【性别】:${this.sex}`)
}
const dog = new Animal("狗","巴顿",5,"公")
dog.print()
for (const key in dog) {
    console.log(key)
}

为了更好的,更简洁的书写类。ES6引入了Class类。通过class关键字来定义。ES6的类只是构造函数的语法糖

1、类的简介

通过类改造上面代码

class Animal{
    constructor(type,name,age,sex){
        this.type = type
        this.name = name
        this.age = age
        this.sex = sex
        //constructor方法默认返回实例对象(即this),完全可以指定返回另外一个对象。
    }
    print(){
        console.log(`【种类】:${this.type}`)
        console.log(`【名字】:${this.name}`)
        console.log(`【年龄】:${this.age}`)
        console.log(`【性别】:${this.sex}`)
    }
}
const dog = new Animal("狗","巴顿",5,"公")
dog.print()
for (const key in dog) {
    console.log(key)
}
(1)constructor 方法

constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor`方法会被默认添加。

class Animal {
}

// 等同于
class Animal {
  constructor() {}
}
(2)取值函数(getter)和存值函数(setter)

与 ES5 一样,在“类”的内部可以使用get和set关键字,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。存值函数和取值函数是设置在属性的 Descriptor 对象上的,不在原型上。

class Animal{
    constructor(name,age){
        this.name = name
        this.age = age
    }
    // 创建一个age属性,并给他加上setter,给该属性赋值时,会运行该函数
    set age(age){
        if(age<0){
            age = 0
        }else if(age>150){
            age = 100
        }
        this._age = age
    }
    // 创建一个age属性,并给他加上getter,给该属性赋值时,会运行该函数
    get age(){
        return this._age + "岁"
    }
}
const dog = new Animal("巴顿",5)
console.log(dog.age)

相当于es5中写法如下 Object.defineProperty可定义某个对象成员属性的读取和设置

Object.defineProperty(this,"age",{
    set(val){
		//...
    },
    get(){
        //...
    }
})
(3)属性表达式:可计算的成员名
const printName = "print"
class Animal{
    constructor(type,name,age,sex){
        this.type = type
        this.name = name
        this.age = age
        this.sex = sex
    }
    [printName](){
        console.log(`【种类】:${this.type}`)
        console.log(`【名字】:${this.name}`)
        console.log(`【年龄】:${this.age}`)
        console.log(`【性别】:${this.sex}`)
    }
}
const dog = new Animal("狗","巴顿",5,"公")
dog.print()
for (const key in dog) {
    console.log(key)
}
(4)Class类表达式
const A = class { //匿名类 ,类表达式
    a = 1
    b = 2
}
const a = new A()

采用 Class 表达式,可以写出立即执行的 Class。

let person = new class {
  constructor(name) {
    this.name = name;
  }
  sayName() {
    console.log(this.name);
  }
}('ll');

person.sayName();

2、有关类的注意点

(1)类和模块的内部,默认就是严格模式。类中的所有代码均在严格模式下执行

(2)类声明不会被提升,与 let和 const一样,存在暂时性死区

new A(); // ReferenceError
class A {}

(3)类的所有方法都是不可枚举的

(4)类的所有方法都无法被当作构造函数使用

(5)类的构造器必须使用 new来调用

(6)类的方法内部如果含有this,它默认指向类的实例。

class Person {
  printName(name = '小张') {
    this.print(`Hello ${name}`);
  }

  print(text) {
    console.log(text);
  }
}

const person = new Person();
const { printName } = person;
printName(); // TypeError: Cannot read property 'print' of undefined

原因:printName方法中的this,默认指向Person类的实例。但是,如果将这个方法提取出来单独使用,this会指向该方法运行时所在的环境(由于 class内部是严格模式,所以 this实际指向的是undefined),从而导致找不到print方法而报错。

3、静态成员

如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用构造函数本身的成员。使用static关键字定义的成员即静态成员

class Chess{
    //使用static关键字定义的
    static width = 100
    static height = 100
    static getWidth(){
        return `width:${Chess.width}`
    }
    constructor(name){
        this.name = name
    }
}
//与使用static关键字定义一样,定义在构造函数身上
Chess.width = 100 //每个棋子都应该有宽高
Chess.getWidth()

注意:

(1)使用static的字段初始化器,添加的是静态成员
(2)没有使用static的字段初始化器,添加的成员位于对象上

class Chess{
    static width = 100
    static height = 100
    step = 1 //相当于直接写在constructor构造器中
    constructor(name){
        this.name = name
        //this.step = 1 //上面代码的效果
    }
}

4、类的继承

(1)类的继承简介

Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多。

如果子类定义了constructor构造器,则必须在constructor的第一行通过super关键字调用父类的构造方法。如果子类没有定义constructor,则会有默认的构造器,该构造器需要的参数和父类一致,并且自动调用父类构造器

class Animal{
    constructor(type,name,age,sex){
        this.type = type
        this.name = name
        this.age = age
        this.sex = sex
    }
    static print(){
        console.log(`【种类】:${this.type}`)
        console.log(`【名字】:${this.name}`)
        console.log(`【年龄】:${this.age}`)
        console.log(`【性别】:${this.sex}`)
    }
}

class Dog extends Animal{
    constructor(name,age,sex,weight){
        super("犬类",name,age,sex)//通过super关键字调用父类的构造器
        this.weight = weight
    }
    print2(){
        console.log(`【性别】:${this.weight}`)
    }
}
const dog = new Animal("巴顿",5,"公",100)
dog.print()

注意:父类的静态方法,也会被子类继承。

(2)Object.getPrototypeOf()

可以从子类上获取父类。因此,可以使用这个方法判断,一个类是否继承了另一个类。

Object.getPrototypeOf(Dog)//返回Dog的父类Animal

Object.getPrototypeOf(Dog) === Animal //true

(3)super 关键字

super既可以当函数调用,也可以当对象使用。

a、super作为函数调用:

super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。否则 JavaScript 引擎会报错。

class A {}

class B extends A {
  constructor() {
    super();//调用A的构造器。
  }
}

注意:super内部的this仍指向B。只能用在子类的构造函数之中,用在其他地方就会报错。

b、super作为对象调用:

class A {
  print() {
    console.log("我被调用了")
  }
}

class B extends A {
  constructor() {
    super();
    super.print(); // "我被调用了"
  }
}
const b = new B();

子类B当中的super.p(),就是将super当作一个对象使用。这时,super在普通方法之中,指向A.prototype,所以super.p()就相当于A.prototype.p()。

注意:由于super指向父类的原型对象,所以定义在父类实例上的方法或属性,是无法通过super调用的。

二、符号Symbol

1、普通符号

符号是ES6新增的一个数据类型,它通过使用函数 Symbol(符号描述)来创建。符号设计的初衷,是为了给对象设置私有属性(私有属性:只能在对象内部使用,外面无法使用)

const sym1 = Symbol("这个是描述信息")
const sym2 = Symbol("abc")
console.log(sym1,sym2)//Symbol(这个是描述信息) Symbol(abc)

符号具有以下特点:

  • 没有字面量
  • 使用 typeof 得到的类型是 symbol
  • 每次调用 Symbol 函数得到的符号永远不相等,无论符号名是否相同
  • 符号可以作为对象的属性名存在,这种属性称之为符号属性
    • 开发者可以通过精心的设计,让这些属性无法通过常规方式被外界访问
    • 符号属性是不能枚举的,因此在 for-in 循环中无法读取到符号属性,Object.keys 方法也无法读取到符号属性
    • Object.getOwnPropertyNames 尽管可以得到所有无法枚举的属性,但是仍然无法读取到符号属性
    • ES6 新增 Object.getOwnPropertySymbols 方法,可以读取符号
const sym = Symbol("这是一个符号属性")
const obj = {
  a:1,
  b:2,
  [sym]:3
}
console.log(obj)//{a: 1, b: 2, Symbol(这是一个符号属性): 3}
const syms = Object.getOwnPropertySymbols(obj)//获取符号属性
console.log(syms)//[Symbol(这是一个符号属性)]
  • 符号无法被隐式转换,因此不能被用于数学运算、字符串拼接或其他隐式转换的场景,但符号可以显式的转换为字符串,通过 String 构造函数进行转换即可,console.log 之所以可以输出符号,是它在内部进行了显式转换
const hero = (function(){
const getRandom = Symbol("用于产生随机数")
return{
   attack:30,
   hp:100,
   defence:10,
   battle(){
       //攻击,伤害:攻击力*随机数
       const dmg = this.attack * this[getRandom](0.5,2)
       console.log(dmg)
   },
   [getRandom](min,max){
       return Math.random()* (max-min)+min
   }
}
})()
console.log(hero)
console.log(hero.battle())//一个数
console.log(hero[getRandom](0.5,2))//Uncaught ReferenceError: getRandom is not defined

2、 共享符号

根据某个符号名称(符号描述)能够得到同一个符号

Symbol.for("符号名/符号描述")  //获取共享符号

const syb1 = Symbol.for("abc");
const syb2 = Symbol.for("abc");
console.log(syb1 === syb2)
const obj1 = {
    a: 1,
    b: 2,
    [syb1]: 3
}

const obj2 = {
    a: "a",
    b: "b",
    [syb2]: "c"
}

console.log(obj1, obj2);

3、 知名符号

知名符号是一些具有特殊含义的共享符号,通过 Symbol 的静态属性得到

ES6 延续了 ES5 的思想:减少魔法,暴露内部实现。因此,ES6 用知名符号暴露了某些场景的内部实现

(1)Symbol.hasInstance

该符号用于定义构造函数的静态成员,它将影响 instanceof 的判定

obj instanceof A
//等效于
A[Symbol.hasInstance](obj)
//Function.prototype[Symbol.hasInstance]
function A() {}
Object.defineProperty(A, Symbol.hasInstance, {
    value: function (obj) {
        return false; //均返回false
    }
})
const obj = new A();
console.log(obj instanceof A); //false
console.log(A[Symbol.hasInstance](obj)); //false
(2) Symbol.isConcatSpreadable:响数组的 concat 方法

该数组是否展开。默认是展开

const arr = [3];
const arr2 = [5, 6, 7, 8];
const result = arr.concat(56, arr2)
console.log(result)//[3, 56, 5, 6, 7, 8]
//-------------------
const arr = [3];
const arr2 = [5, 6, 7, 8];
arr2[Symbol.isConcatSpreadable] = false;
const result = arr.concat(56, arr2)
console.log(result)//[3, 56, [5,6,7,8]]
(3)Symbol.toPrimitive:影响类型转换的结果

该对象被转为原始类型的值时,会调用这个方法,返回该对象对应的原始类型值。

class Temperature {
    constructor(degree) {
        this.degree = degree;
    }

    [Symbol.toPrimitive](type) {
        if (type === "default") {
            return this.degree + "摄氏度";
        }
        else if (type === "number") {
            return this.degree;
        }
        else if (type === "string") {
            return this.degree + "℃";
        }
    }
}

const t = new Temperature(30);

console.log(t + "!");//30摄氏度!
console.log(t / 2); //15
console.log(String(t));//30℃
(4)Symbol.toStringTag:影响 Object.prototype.toString 的返回值
class Person {
    [Symbol.toStringTag] = "Person"
}
const p = new Person();
const arr = [32424, 45654, 32]
console.log(Object.prototype.toString.apply(p));//[object Person]
console.log(Object.prototype.toString.apply(arr))//[object Array]
(5)Symbol.iterator:可以改变遍历器方法。
(6)Symbol.split:当该对象被String.prototype.split方法调用时,会返回该方法的返回值
(7)Symbol.search:当该对象被String.prototype.search方法调用时,会返回该方法的返回值。
(8)Symbol.replace:当该对象被String.prototype.replace方法调用时,会返回该方法的返回值。
(9)Symbol.match:当执行str.match(myObject)时,如果该属性存在,会调用它,返回该方法的返回值
(10)Symbol.species:创建衍生对象时,会使用该属性。
log(Object.prototype.toString.apply(p));//[object Person]
console.log(Object.prototype.toString.apply(arr))//[object Array]
(5)Symbol.iterator:可以改变遍历器方法。
(6)Symbol.split:当该对象被String.prototype.split方法调用时,会返回该方法的返回值
(7)Symbol.search:当该对象被String.prototype.search方法调用时,会返回该方法的返回值。
(8)Symbol.replace:当该对象被String.prototype.replace方法调用时,会返回该方法的返回值。
(9)Symbol.match:当执行str.match(myObject)时,如果该属性存在,会调用它,返回该方法的返回值
(10)Symbol.species:创建衍生对象时,会使用该属性。
(11)Symbol.unscopables:该对象指定了使用with关键字时,哪些属性会被with环境排除。
保姆级教程:在RK3588开发板上编译带MPP硬件加速的FFmpeg(含完整依赖库配置) 本文提供在RK3588开发板上编译支持MPP硬件加速的FFmpeg的详细教程,涵盖交叉编译环境搭建、MPP框架及依赖库配置,最终实现4K视频硬件编解码性能优化。通过实战步骤和性能对比,展示如何充分发挥RK3588的硬件加速能力。 阅读详情

相关推荐

战舰V3移植CANopenNode并驱动电机全流程

第三部分是电机的对象字典(也就是节点的OD)中的索引,长度2个字节。索引发送的是小段模式,比如这一部分为0X40 0X60,实际操作的索引地址为0X6040。第一部分是COB-ID,长度1个字节,电机的node-ID默认为0x01,所以报文ID一直是601。第五部分是要写入的数据,数据发送的时候是小端模式,低字节数据先发送,长度由第二部分决定。配置定时器6,时间为1ms,根据公式计算得到参数PSC取72-1,ARR取1000-1。第二部分是CMD,长度1个字节,其实就是数据部分的长度,

qq_50526837的博客 3046

C语言中有符号和无符号的区别(signed与unsigned)

#include<stdio.h> int main(void) { //数类型 标识符=值 //无符号 unsigned 有符号singend(有符号可以省略) //有符号数是最高位为符号位,0代表正数,1代表负数。 //无符号数最高位不是符号位,而就是数的一部分,无符号数不可能是负数。 //%u——输出unsigned int类型-即表示输出一个无符号十进制整型数据 //% d——输出int类型 signed int a = -10; printf("%d\n", a);

IT日知录 3341

AGV路径规划实战:如何用Python+ROS实现激光SLAM导航(附避障代码)

本文提供了一份基于Python和ROS实现AGV激光SLAM导航的实战指南。内容涵盖从Docker环境搭建、激光雷达数据处理、Gmapping建图,到Move_Base全局/局部路径规划与TEB局部规划器配置的全流程。重点解析了如何通过参数调优实现稳定导航,并附带了紧急避障代码,帮助开发者快速构建具备自主路径规划与实时避障能力的AGV系统。

pepsi的博客 1235

ES6符号与符号属性

JavaScript在ES6之前有5种基本类型(number Boolen string null undefined),在 ES6新增了一个基本类型---符号(symbol),本篇文章将会讲解符号的相关内容。

tjlcy2019的博客 966

SAP SD 顾问面试问题 consultant interview questionnaire

以下是我个人目前面试团队 SD顾问问题的小结,希望对大家有所帮助, 也可能有回答错误的地方,希望同行不吝赐教。 也希望各位顾问们讲你们遇到的一些面试问题做个跟贴,方便大家共同进步,谢谢。   面试问题清单:  一、销售订单类型影响: 可用性检查,交货类型,输出,信贷,定价,需求,报表,合作伙伴,文本,不完整日志,交货开票,订单开票,公司间开票,统计组,屏幕顺序组,参数文件...

weixin_33825683的博客 1809

海思SD3403/SS928V100开发(6)单路GMSL-MIPI-YUV相机视频输入调试

硬件连接:森云GMSL相机 -> GMSL 解串器 -> SD3403 MIPI0暂时先进行单路视频输入通路调试。

jzwjzw19900922的博客 1934

ES6——符号Symbol

符号一、普通符号1.创建一个符号2.符号的特点二、共享符号1.基础2.实现三、知名符号1.Symbol.hasInstance2.Symbol.isConcatSpreadable 一、普通符号 符号是ES6新增的一个数据类型,它通过使用函数 Symbol(符号描述)来创建 1.创建一个符号 const syb1 = Symbol(); const syb2 = Symbol("abc"); console.log(syb1, syb2); 2.符号的特点 符号设计的初衷,是为了给对象设置私有属性 这里

xun__xing的博客 643

海思SD3403,SS928/926,hi3519dv500,hi3516dv500移植yolov7,yolov8(1)

海思SS928,SS926以及Hi3519dv500,hi3516dv500下的yolov7模型部署推理系列

Littro Innovations 3087

ES6 中新增的 Symbol(符号) 类型基本知识点总结

Symbol 类型   Symbol(符号)是 ES6 新增的一种简单(原始)数据类型。符号是原始值,且符号的实例是唯一、不可变的。符号的用途是确保对象属性使用唯一标识符,不会发生属性冲突的危险。符号就是用来创建唯一记号,进而用作非字符串形式 的对象属性。 一、符号的基本用法   符号需要使用 Symbol() 函数初始化。因为符号是原始类型,所以 typeof 操作符对符号返回symbol。 let sym = Symbol(); console.log(typeof sym); // symbol  

ItDaChuang的博客 1002

自动驾驶算法-滤波器系列(三)——不同运动模型(CV、CA、CTRV、CTRA)的建模和推导

CV & CA & CTRV & CTRA1. CV模型2. CA模型3. CTRV模型4. CTRA模型 1. CV模型 2. CA模型 3. CTRV模型 4. CTRA模型

weixin_41480034的博客 2万+

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

ES6新数据类型--Symbol(符号)

一、 Symbol(符号)初步了解 symbol 是ECMAScript6 新增的数据类型,是原始值,且符号实例是 唯一、不可变的。 符号的用途是确保对象属性使用 唯一的标识符 1-1、基本使用方法 1-1-1、符号需要使用Symbol()函数初始化 let sym = Symbol(); console.log(typeof sym);// symbol 1-1-2、Symbol(description),传入一个对符号的描述参数description 字符串“参数”跟符号定义或标识符完全无关 le

Lhy_JL的博客 411

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

行动中的ES6:符号及其用法

尽管ES2015引入了许多语言功能,这些功能已经出现在开发人员的心愿单上了一段时间,但有些新功能却鲜为人知和理解,其好处也不太明显,例如符号。 该符号是一种新的原始类型,它是一个唯一的令牌,可以保证永不与另一个符号冲突。 从这个意义上讲,您可以将符号视为一种UUID (通用唯一标识符)。 让我们看一下符号如何工作,以及我们可以使用它们做什么。 创建新符号 创建新符号非常简单,只是调用...

254

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

[译] 从 CoffeeScript 迁移到 ES6

我在多年前爱上了coffeScript。对于javaScript,我一直保持着深沉的爱,也十分高兴得看到node.js的快速发展,但是作为一个有python背景的程序员,我更喜欢coffeeScript的简练语法。 在任何一个活跃的社区中,事物的迭代更新都是必然的,现在,我们看见了javaScript向着ES6标准的巨大进步。ES6包含了...

weixin_34242819的博客 180

使用ES6,Pt更好JavaScript。 II:深入学习课堂

与旧共进,与新共进 ( Out with the Old, In with the new ) Let's be clear about one thing from the start: 让我们从一开始就清楚一件事: Under the hood, ES6 classes are not something that is radically new: They mainly provid...

culiu9261的博客 441

在JavaScript中的类-公共、私有和受保护的

该属性将是只读的,并且任何对象都将从类中继承它,但只能在类内部进行更改。虽然ES6引入了class关键字,可以模拟类并允许我们进行面向对象编程,但JavaScript缺少创建类中公共(public)、私有(private)和受保护(protected)成员的能力。内部接口指的是类的方法和属性,只能由类自身访问,而不能从外部访问。我们强制消费者使用函数或类上定义的方法,而不是直接访问属性(这是他们不应该做的)。这是JavaScript的默认特性。🚨声明类的私有成员的#方法是ES2019/ES10的一部分。

u011082575的博客 996

浅谈JavaScript、ES5、ES6

什么是JavaScript JavaScript一种动态类型、弱类型、基于原型的客户端脚本语言,用来给HTML网页增加动态功能。(好吧,概念什么最讨厌了) 动态: 在运行时确定数据类型。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。 弱类: 计算时可以不同类型之间对使用者透明地隐式转换,即使类型不正确,也能通过隐式转换来得到正确的类型。 原型: 新对象继承对象(作...

c123m的专栏 189

ES6新增数据类型(Symbol)

ES6新增数据类型(Symbol) 基本(原始)类型和引用类型介绍 在了解Symbol之前,我们需要了解下JS的数据类型,在JS中数据类型分为两类:基本(原始)类型和引用类型。 基本(原始)类型:数值型(Number),字符类型(String),布尔值型(Boolean),null 和 underfined 引用类型:对象(Object) 那es6新增的Symbol是什么类型呢? 这里Symbol也是基本类型; 概述 ES6 引入了一种新的原始数据类型 Symbol ,表示独一无二的值,最大的用法是用来

qq_46366496的博客 950

es6中文手册

使用。

2501_90223348的博客 257

ES6新特性概览

本文基于lukehoban/es6features ,同时参考了大量博客资料,具体见文末引用。 ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony(和谐之意,显然没有跟上我国的步伐,我们已经进入中国梦版本了)。上一次标准的制订还是2009年出台的ES5。目前ES6的标准化工作正在进行中,预计会在14年12月份放出正式敲定的版本。但大部分标准

谨慎对事 低调行事 0与1的世界 浩瀚如海 学无止境 552

ES6比较常用的特性

  箭头操作符   如果你会C#或者Java,你肯定知道lambda表达式,ES6中新增的箭头操作符=&gt;便有异曲同工之妙。它简化了函数的书写。操作符左边为输入的参数,而右边则是进行的操作以及返回的值Inputs=&gt;outputs。 我们知道在JS中回调是经常的事,而一般回调又以匿名函数的形式出现,每次都需要写一个function,甚是繁琐。当引入箭头操作符后可以方便地写回调了。...

WX_chen的博客 175

ES6

ES6教程 对象字面量 方法属性 let obj = { // before foo: function() { return 'foo' }, // after bar() { return 'bar' } } proto let o = { __proto__: ...

weixin_30920091的博客 114

ES6之符号与符号属性

引 在 JS 已有的基本类型(字符串、数值、布尔类型、 null 与 undefined )之外, ES6 引入了一种新的基本类型:符号(Symbol)。符号起初被设计用于创建对象私有成员,而这也是 JS 开发者期待已久的特性。在符号诞生之前,将字符串作为属性名称导致属性可以被轻易访问,无论命名规则如何。而“私有名称”意味着开发者可以创建非字符串类型的属性名称,由此可以防止使用常规手段来探查这些名...

仇益阳的博客 1万+

ES6里面新增的符号和运算符

ES6里面新增的符号和运算符ES6里面新增的运算符ES6里面新增的符号(Symbol(符号描述))注意: ES6里面新增的运算符 我们以前都知道有算术运算符、逻辑运算符和关系运算符还有位运算符吧! 在这里我就是要说一下ES6里面新增的…运算符 这个运算符的特点: 1、它是类似于arguments的,但是又有不同,…运算符用在参数里面时必须要为参数的最后一个而且他的这个前面也可以加参数 2、他主要用...

weixin_45846291的博客 673

ES6中的类

ES6中的类 类的写法 class Person{ height="178cm"; constructor(name,age){ //属性 this.name = name; this.age = age; } //方法 getName(){ console.log("姓名是:"+this.name); } } let student = new Person("张三",20); student

白小白的博客 130

ES6、ES7、ES8、ES9、ES10、ES11、ES12、ES13新特性大全

本文是对 ES6 至 ES13 常用到的特性的总结,关于每个特性的详细内容,都有单独的文章进行详细讲述,可以跳转到具体文章进行学习查看。学习永无止境大家一起努力 。 文章为从新到旧的顺序。 ECMAScript 2022(ES13)提案阶段,更倾向于面向对象 声明类的字段:类字段可以在类的顶层被定义和初始化私有方法&字段:用#前缀来定义类的私有方法和字段类的静态公共方法和字段:增加了静态公共字段、静态私有方法和静态私有字段的特性ECMScript 类静态初始化块:在类声明/定义期间评估静态初始化代.

江一铭 6138
上一篇: ES6中的Set/Map集合和数组的扩展
下一篇: ES6中的迭代器生成器、反射与代理
七钥
博客等级 码龄9年 744粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值