Class类
Class类
- 以前创建构造函数
function Person(name){ this.name = name } Person.prototype.say = function(){ console.log( `hi, my name is ${this.name}`); }
- ES6 的类,完全可以看作构造函数的另一种写法
class Point { // ... }typeof Point // "function" Point === Point.prototype.constructor // true
class Point { constructor() { // ... }toString() { // ... }toValue() { // ... } }// 等同于Point.prototype = { constructor() {}, toString() {}, toValue() {}, };
- constructor 方法
constructor()方法默认返回实例对象(即this),完全可以指定返回另外一个对象
class Foo {
constructor() {
return Object.create(null);
}
}new Foo() instanceof Foo
// false
- 实例方法,静态方法 static
class Person{ //定义一个person类型 constructor(name){ //构造函数 this.name = name//当前person类型的实例对象 } say(){ console.log( `hi, my name is ${this.name}`); } static create (name){ //静态方法内部this不会指向某个实例对象,而是当前的类型 return new Person(name) } } const p = new Person("mcgee") p.say()const jack = Person.create("jack") jack.say()
- 类的继承 extends
class Student extends Person{
constructor(name,number)
{
super(name) //super对象,始终指向父类,调用它就是调用父类的构造函数
this.number = number
}
hello(){
super.say()
console.log(`my school number is ${this.number}`);
}
}const ex = new Student("mcgee",123)
console.log(ex.name);
ex.hello()
- 类不存在变量提升
new Foo();
// ReferenceError
class Foo {}
- 父类静态方法也会被子类继承
class A {
static hello() {
console.log('hello world');
}
}class B extends A {
}B.hello()// hello world
推荐阅读
- JAVA(抽象类与接口的区别&重载与重写&内存泄漏)
- 为什么你的路演总会超时()
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- thinkphp|thinkphp 3.2 如何调用第三方类库
- 使用composer自动加载类文件
- 一个健康的APP和健全的人格大体类似
- 种树郭橐驼传(文言句式+古今异义+词类活用+通假字)
- 归乡-序章(世界伊始,人类无所依靠,我的故事就从这里开始...)
- jQuery插件
- 第十六天(请介绍一件让你非常自豪的事情,(不能是职业类的),什么原因感到自豪。)