美文网首页
ES6 面向对象 class 类

ES6 面向对象 class 类

作者: codeffee | 来源:发表于2017-04-07 07:42 被阅读0次

新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已。

传统的写法

<script>
    function People(name){
        this.name=name;     
    }
    
    People.prototype.sayName=function(){
        console.log(this.name);
    }
    
    var p=new People('zl');
    p.sayName();  //zl
</script>

class ES6新写法

<script>
    class People{   //class开头写,
        constructor (name){     //当使用new来创建对象,会自动调用这个函数
            this.name=name
        }
        sayName(){  //共享的方法(方法会挂载到原型身上)
            console.log(this.name)  
        }
    }
    
    var p=new People('zl');
    p.sayName();  //zl
</script>

ES6的类,完全可以看作构造函数的另一种写法

constructor中的属性和方法会自动调用,sayName中的方法会挂载到原型上,实现共享

注意:class没有提升

私有方法:

_bar(baz) {
    return this.snaf = baz;
}

上面代码中,_bar方法前面的下划线,表示这是一个只限于内部使用的私有方法。但是,这种命名是不保险的,在类的外部,还是可以调用到这个方
法。

class 里的继承 extends super

extends [iksˈtendz] 延长延续

语法:

class Cat extends Animal{}

定义一个Cat类,该类通过extends关键字,继承了Animal类的所有属性和方法。

例子

class Cat extends Animal{
    constructor(x,y,name){
        super(x,y);
        this.name=name
    }
}

注意:

子类必须在constructor方法中调用super方法,否则新建实例时会报错。这是因为子类没有自己的this对象,而是继承父类的this对象,然后对其进行加工。如果不调用super方法,子类就得不到this对象。

ES5 的继承,实质是先创造子类的实例对象this,然后再将父类的方法添加到this上面(Parent.apply(this))。

ES6 的继承机制完全不同,实质是
先创造父类的实例对象this(所以必须先调用super方法),然后再用子类的构造函数修改this。

静态方法 static

class People {
    static print(){
        console.log(100)
    }
}

var p = new People();

p.print()//报错

所有在类中定义的方法,都会被实例继承。如果在一个方法前,加上static关键字,就表示该方法不会被实例继承。而是直接通过类来调用,这就称为“静态方法”

这能这样调用
People.print();

父级的静态方法可以被子级继承

继承后子级可以调用父级的方法

class Foo {
    static classMethod() {
        console.log('我被继承了');
    }
}
class Bar extends Foo {
}

Bar.classMethod(); 

ES6规定class只有静态方法没有静态属性。

相关文章

  • ES6面向对象

    1、ES6面向对象: class(类) 构造函数 对象 实例对象 ES5面向对象是模拟面向对象。 2、继...

  • JavaScript之面向对象编程

    五、面向对象编程 目录:面向对象原型继承、面向对象class继承(ES6引入的) 1.面向对象原型继承 类:模板 ...

  • 关于class

    关于class ES6 通过class 关键字,可以定义类。新的class写法让对象原型写法更加清晰,更像面向对象...

  • ES6 class类

    在ES6以前,没有类的概念,所有的面向对象都是基于原型实现的。ES6中可以通过class定义类,但是class的本...

  • 【ES6】class的基本使用与继承

    生成实例对象的传统方法是通过构造函数 定义类 ES6 引入了class(类),让javascript的面向对象编程...

  • ES6时代的JavaScript面向对象编程

    ES6时代的JavaScript面向对象编程 ES6带来的类语法糖 类的定义 ES6支持了class,extend...

  • Class 类

    class声明 class 是 ES6 模仿面向对象语言(C++, Java)提出的定义类的方法。形式类似 C++...

  • 面向对象

    一、es6的面向对象 1、class关键字,类和构造器分开了2、class里面直接加方法 以前的构造函数 es6:...

  • 第八周第五天笔记之es6+面向对象+jQuery版左右切换轮播图

    1 es6+面向对象+jQuery版左右切换轮播图实例 思路:es6中面向对象的创建,用class创建类全局属性放...

  • Pytorch搭建网络

    面向对象编程 类 面向对象编程——类class和对象object class是一种类型(Type),object是...

网友评论

      本文标题:ES6 面向对象 class 类

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