es6-类

作者: 娇娇_5038 | 来源:发表于2022-05-20 10:16 被阅读0次

es6有一种与其他语言中类似的特性:类声明。同时,他也是es6中最简单的形式。

基本的类声明语法

要声明一个类,首先编写class关键字,紧跟着的是类的名字,其他部分的语法类似于对象字面量的简写形式,但不需要在类的各元素之间使用逗号分隔。请看这段简单的类声明代码。

   class PersonClass{

        constructor(name){

            this.name=name;

        }

        sayName(){

            console.log(this.name)

        }

    }

    let person=new PersonClass('jiaojiao');

    person.sayName();

    console.log(person instanceof PersonClass);//true

    console.log(person instanceof Object);//true

    console.log(typeof PersonClass);//function

    console.log(typeof PersonClass.prototype.sayName);//function

注:与函数不同的是,类属性不可被赋予新值,在之前的实例中,PersonClass.prototype就是这样一个只读的类属性。

为何使用类语法

尽管类与自定义类型之间有诸多相似之处,我们仍需牢记它们的这些差异。

● 函数声明可以被提升,而类声明与let类似,不能被提升。真正执行声明语句前,它们会存在于临时死区中。

● 类声明中的所有代码将自动运行在严格模式下,而且无法强行让代码脱离严格模式执行。

● 在自定义类型中,需要通过Object.defineProperty()方法手工指定某个方法不可枚举

● 每个类都有一个名为(Construct)的内部方法,通过关键字new调用那些(Construct)的方法会导致程序抛出错误

● 使用除关键字new 以外的方式调用类的构造函数会导致程序抛出错误。

● 在类中修改类名会导致程序错误

 const PersonType2=(function(){

      'use strict';

      const PersonType2=function(name){

          this.name=name;

      }

      Object.defineProperty(PersonType2.prototype,'sayName',{

          value:function(){

              console.log(this.name);

          },

          enumerable:false,

          writable:true,

          configurable:true

      })

      return PersonType2;

   }());

  class Foo {

            constructor() {

                Foo = 'bar'

            }

        }

        Foo = 'bar'

命名类表达式

在上一节的示例中,我们定义的类的表达式是匿名的,其实类和函数一样,都可以定义为命名表达式。声明时

相关文章

  • 2019-01-24

    ES6-之 filter

  • es6-类

    前言 最近这两天有点不在状态,感觉有种无形的压力压在身上,变的异常的暴躁了,唉,前端这条路真的走对了吗?算了,敲代...

  • ES6-类

    1.类 class能产生对象的东西就叫类。关键字:new,constructor,get,set,extends,...

  • ES6-类

    原型 obj.toString()等价于window.Object.prototype.toString.call...

  • es6-类

    es6有一种与其他语言中类似的特性:类声明。同时,他也是es6中最简单的形式。 基本的类声明语法 要声明一个类,首...

  • es6-类的继承

  • JavaScript学习 之 版本

    目录 引言 ECMAScript ES5-/-ES6-/-ES7 babelbabel-clibabel-node...

  • es6-函数

    title: es6-函数date: 2018-02-01 21:47:46tags: es6 前言 杭州这周温度...

  • es6-块级作用域绑定

    title: es6-块级作用域绑定date: 2018-01-24 21:32:33tags: es6 前言 花...

  • 高频前端面试题汇总之JavaScript篇-ES6

    ES6-基础 1.let、const、var的区别 (1)块级作用域 块作用域由 { }包括,let和const具...

网友评论

      本文标题:es6-类

      本文链接:https://www.haomeiwen.com/subject/jnknurtx.html