ES6(四)Class类、模板

Class类的基本语法
ES6的class可以看做是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰,更加面向对象编程的语法。

ps:ES5的生成方法

function Point(a, s) {
  this.a =a;
  this.s=s;
}
Point.prototype.toString = function() {
  return '('+this.a+','+this.s+')';
}
var p = new Point(1,2)

ps:ES6的方法

class Point {
  constructor(a,s){
    this.a = a;
    this.s = s;
  }
  toString(){
     return '('+this.a+','+this.s+')';
  }
}

从代码中可以看到除了function变成了class以外,其他的跟ES5基本一样;
在类中声明方法的时候,方法前不加 function 关键字;
方法之间不要用逗号分隔,否则会报错;
一个类中只能拥有一个 constructor 方法;

class 的实例化必须通过 new 关键字。

使用 extends 创建子类
extends 关键字在类声明或类表达式中用于创建一个类作为另一个类的一个子类;
使用extends关键字实现类之间的继承。这比在ES5中使用继承要方便很多;
使用继承的方式,子类就拥有了父类的方法;

//定义类父类
class Parent {
    constructor(name,age){
        this.name = name;
        this.age = age;
    }
    speakSometing(){
        console.log("kdhaufdhakshfsfsd");
    }
}
//定义子类,继承父类
class Child extends Parent {
    coding(){
        console.log("kdhaufdhakshfsfsdt");
    }
}
var c = new Child();

//可以调用父类的方法
c.speakSometing(); // I can speek chinese

模板
模块可以多次加载,但是只会在第一次加载时运行一次,然后运行结果就被缓存了,以后再加载,就直接读取缓存结果。要想让模块再次运行,必须清除缓存。
每一个模块内声明的变量都是局部变量,不会污染全局作用域。
模块中可以导入和导出各种类型的变量,如函数,对象,字符串,数字,布尔值,类等。
模块代码自动运行在严格模式下,并且没有任何办法退出严格模式;
在模块顶层作用域创建的变量,不会被自动添加到共享的全局作用域,他们只会在模块的顶层作用域内部存在;
模块的顶层作用域this值为undefined;
对于需要让模块外部访问的内容,模块必须导出他们;
允许模块从其他模块导入绑定;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值