ES6之class
jiaojsun
做一只快乐的小码龙
展开
-
ES6之class--01类的由来和使用
由于class这块老是卡壳,所以整理两篇博文出来,本文主要参考《ES6入门》和《JS高程》,《JS权威指南》1)类的由来首先明确一下构造函数的概念,《JS高程》中定义构造函数本身就是一个函数,只不过该函数是出于创建新对象的目的而定义的var person = new Object()。这行代码创建了Object引用类型的一个新实例,然后把该实例保存在了变量person中,使用的构造函...原创 2019-02-07 15:03:03 · 290 阅读 · 0 评论 -
ES6之class--02constructor方法和类的实例
1)constructor 方法constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。class Point {}// 等同于class Point { constructor() {}}上面代码中,定义了一个空的类Poi...原创 2019-02-07 17:16:29 · 968 阅读 · 0 评论 -
ES6之class--03取值、存值、表达式
1)取值函数(getter)和存值函数(setter)与 ES5 一样,在“类”的内部可以使用get和set关键字,对某个属性设置存值函数和取值函数,拦截该属性的存取行为。 class MyClass { constructor() { // ... } get prop() { return 'getter'; } set prop(value...原创 2019-02-07 17:31:30 · 831 阅读 · 0 评论 -
ES6之class--04注意点
1)严格模式类和模块的内部,默认就是严格模式,所以不需要使用use strict指定运行模式。只要你的代码写在类或模块之中,就只有严格模式可用。考虑到未来所有的代码,其实都是运行在模块之中,所以 ES6 实际上把整个语言升级到了严格模式。 2)不存在提升 类不存在变量提升(hoist),这一点与 ES5 完全不同。 new Foo(); // ReferenceError...原创 2019-02-07 17:56:25 · 269 阅读 · 0 评论 -
ES6之class--05静态方法和实例属性的新方法
1)静态方法类相当于实例的原型,所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。class Foo { static classMethod() { return 'hello'; }}Foo.classMethod() // 'hello'var foo...原创 2019-02-07 20:09:56 · 273 阅读 · 0 评论 -
ES6之class--06静态属性、私有方法、new.target 属性
1)静态属性class Foo {}Foo.prop = 1;Foo.prop // 1上面的写法为Foo类定义了一个静态属性prop。 目前,只有这种写法可行,因为 ES6 明确规定,Class 内部只有静态方法,没有静态属性。现在有一个提案提供了类的静态属性,写法是在实例属性法的前面,加上static关键字。class MyClass { sta...原创 2019-02-07 20:34:37 · 1015 阅读 · 0 评论 -
ES6之class--07继承简介和Object.getPrototypeOf()
1)继承简介Class 可以通过extends关键字实现继承,这比 ES5 的通过修改原型链实现继承,要清晰和方便很多。class Point {}class ColorPoint extends Point {} 看一个例子class ColorPoint extends Point { constructor(x, y, color) { super...原创 2019-02-07 20:45:39 · 298 阅读 · 0 评论 -
ES6之class--08继承之super
1)super关键字super这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。1.当函数用第一种情况,super作为函数调用时,代表父类的构造函数。ES6 要求,子类的构造函数必须执行一次super函数。class A {}class B extends A { constructor() { super(); }}...原创 2019-02-07 22:59:03 · 135 阅读 · 0 评论 -
ES6之class--09类的 prototype 属性和__proto__属性
先回忆一下上面的几张图大多数浏览器的 ES5 实现之中,每一个对象都有__proto__属性,指向对应的构造函数的prototype属性。Class 作为构造函数的语法糖,同时有prototype属性和__proto__属性,因此同时存在两条继承链(1)子类的__proto__属性,表示构造函数的继承,总是指向父类。(2)子类prototype属性的__proto__属性,表...原创 2019-02-07 23:08:45 · 976 阅读 · 2 评论