ES6 class的基本语法-学习笔记

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

    类的内部所有定义的方法,都是不可枚举的(non-enumerable)。这一点与 ES5 的行为不一致。

  2、类和模块的内部,默认就是严格模式,所以不需要使用use strict指定运行模式。只要你的代码写在类或模块之中,就只有严格模式可用。 --考虑到未来所有的代码,其实都是运行在模块之中,所以 ES6 实际上把整个语言升级到了严格模式。

  3、一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。

    constructor方法默认返回实例对象(即this),完全可以指定返回另外一个对象。

class Foo {
  constructor() {
    return Object.create(null);
  }
}

new Foo() instanceof Foo

  

    类必须使用new调用,否则会报错。这是它跟普通构造函数的一个主要区别,后者不用new也可以执行。

class Foo {
  constructor() {
    return Object.create(null);
  }
}

Foo()
// TypeError: Class constructor Foo cannot be invoked without ‘new‘

    

  4、与 ES5 一样,实例的属性除非显式定义在其本身(即定义在this对象上),否则都是定义在原型上(即定义在class上)。

    与 ES5 一样,类的所有实例共享一个原型对象。

var p1 = new Point(2,3);
var p2 = new Point(3,2);

p1.__proto__ === p2.__proto__
//true

  5、与函数一样,类也可以使用表达式的形式定义。

  6、类不存在变量提升(hoist),这一点与 ES5 完全不同。

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

    上面代码中,Foo类使用在前,定义在后,这样会报错,因为 ES6 不会把类的声明提升到代码头部。这种规定的原因与下文要提到的继承有关,必须保证子类在父类之后定义。

  7、私有方法是常见需求,但 ES6 不提供,只能通过变通方法模拟实现。有一种方法是利用Symbol值的唯一性,将私有方法的名字命名为一个Symbol值。

  8、与私有方法一样,ES6 不支持私有属性。目前,有一个提案,为class加了私有属性。方法是在属性名之前,使用#表示。

  

时间: 2024-08-06 05:36:56

ES6 class的基本语法-学习笔记的相关文章

Vuejs入门-----安装+基本语法学习笔记

一.基本介绍 Vuejs是一套构建用户界面的渐进式框架. vue-cli脚手架 搭建基本代码框架vue-router 官方插件管理路由vue-resourse Ajax通信webpack 构建工具es6+eslint eslint:es6代码风格检查工具工程化 组件化 模块化 移动端常用开发技巧:flex弹性布局 css stickyfooter 炫酷的交互设计 2-vuejs介绍 架构从传统后台MVC向REST API+前端MV*迁移 MVVM :view(视图.dom) viewmodel(

python语法学习笔记

函数的参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解. Python的函数定义非常简单,但灵活度却非常大.除了正常定义的必选参数外,还可以使用默认参数.可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码. 位置参数 我们先写一个计算x2的函数: def power(x): return x * x

JavaScript语法学习笔记

1.关于执行JavaScript代码的方法: 第一种方法是将JavaScript代码放到文档<head>标签中的<script>标签之间: <head>     <meta charset="utf-8"> <title>index</title> <script> JavaScript goes here.... </script> </head> 第二种方法是讲JavaScr

SQL:1999基本语法(学习笔记)

SQL:1999基本语法 SELECT [DISTINCT] * | 列名称 [AS]别名,........ FROM 表名称1 [别名1][CROSS JOIN表名称2 别名2]| [NATURAL JOIN表名称2 别名2] [ JOIN表名称2 别名2 USING (关联列名称)] [ JOIN表名称2 别名2 on (关联条件)] [LEFT | RIGHT | FULL OUTER JOIN 表2 ON (关联条件)] [WHERE 条件(s)] [ORDER BY 排序的字段 1,A

Html 语法学习笔记二

1.图像标签(<img>)和源属性(Src) 在 HTML 中,图像由 <img> 标签定义.        <img> 是空标签,意思是说,它只包含属性,并且没有闭合标签.        要在页面上显示图像,你需要使用源属性(src).src 指 "source".源属性的值是图像的 URL 地址.        定义图像的语法是: <img src="url" /> URL 指存储图像的位置.如果名为 "

markdown语法学习笔记

##1.**标题** # 一级标题 ## 二级标题   ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 ##2.**加粗** 首尾各加两个*号   ##3.*斜字体* 首尾加一个*号    ##4.倾斜并加粗   ***here***    ##5.图片      ![图片名称](链接) ![小黄人](http://img4.duitang.com/uploads/blog/201403/10/20140310101315_iniQr.jpeg)   ##6.

jsp 基本语法学习笔记

jsp主要包含一下内容: 指令:指令提供该页面的全局信息,例如,重要的状态,错误处理,是否是session的一部分等. 声明:页面范围的变量和方法的声明. 脚本:嵌入页面内java代码. 表达式:把表达式变成string型以便包含在内容的输出中. jsp中的替换:可用&apos;表示双引号,可用&quto;来表示单引号. jsp的注释: <%-- 这是一个JSP的注释--%> <% /*这是一个JSP的注释*/%> <% /**这是一个JSP的注释*/%>

html之css选择器语法学习笔记

相关内容: css选择器的用法: 选择器的语法 标签选择器 类选择器 id选择器 选择器的分组 嵌套选择 属性选择器 子标签选择器 相邻兄弟选择器 参考资料:w3school 首发时间:2018-03-02 23:54 css选择器的用法: css选择器的语法:css选择器的定义有两部分组成,一个是选择器,一个是样式定义 标签选择器(直接根据标签来选择): h1 {color:red; font-size:14px;} p { color: #ff0000; } body { color: #0

语法学习笔记之名词

2016年12月31日 一.名词 名称:表示人的,东西的,地点的 1.戴帽子: 一般情况 前面加个冠词 a gril      一个女孩 the gril   这个女孩 a city the city a station the station 特殊情况: Steven Beijing Peking University 2.名词的单复数 规则1:以s sh x ch结尾的加es a bus--buses a brush--brushed a box--boxes a bench--benche

Object C语法学习笔记(一)

1.@property与@synthesize配对使用. @property预编译指令的作用是自动声明属性的setter和getter方法. @synthesize 创建了该属性的访问代码 功能:让编译好器自动编写一个与数据成员同名的方法声明来省去读写方法的声明. 2.强引用(__strong)和 弱引用(__weak)   在Objective-C的ARC模式中, id obj1 = [[NSObject alloc] init];   这里虽然没有显示的声明为__strong,但是Objec