资讯专栏INFORMATION COLUMN

es6的面向对象

cppprimer / 2220人阅读

摘要:的时候调用姜姜吴建我会飞去上学姜姜姜姜获取加赋值。值得注意是,这里的不是新的对象继承模型,它只是原型链的语法糖表现形式。允许一个子类继承父类,需要注意的是,子类的函数中需要执行函数。

es6的classes
构造方法:constructor。new的时候调用
class Student{
    constructor (name,age){
        this.name=name;
        this.age=age;
    }
    run(){
        return this.name;
    }
}
let xs = new Student("姜姜",23);
console.log(xs.name);
console.log(xs.age);

function Vehicle (name,age){
    this.name = name;
    this.age = age;
}
Vehicle.prototype.name = function name(){
    return this.name;
};
var jj = new Vehicle ("吴建",24);
console.log(jj.name);
get set
class Student{
    constructor (name,age){
        this.name =name;
        this.age=age;
    }
    run(){
        console.log("我会飞");
    }
    get xm(){
        return this.name +"123";
    }
    set xm(value){
        this.name =value;
    }
    static shangxue (){
        console.log("去上学");
    }
}
let xs = new Student("姜姜",25);
console.log(xs.xm);
xs.xm="姜姜";
console.log(xs.xm);
Student.shangxue();
//get:获取加赋值。
//set:设置。
//static:静态方法|类方法。
//set和get的方法名相同,而且可以同名
方法重载|方法覆盖:
class Student{
    constructor (name,age){
        this.name =name;
        this.age=age;
    }
    run(){
        console.log("我会飞");
    }
}
let xs = new Student("姜姜",25);

class Teacher extends Student{
    constructor (name,age,sex){
        super(name,age);
        this.sex=sex;
    }
    eat(){
        console.log(this.name +"is eating")
    }
    run(){
        super.run();
        console.log("我想高飞");
    }
}
var ls = new Teacher("吴建","30","男");
ls.run();//我会飞 我想高飞;
注释:虽然子类继承了父类的run方法,但是子类会把父类的方法给覆盖掉,这个就是方法覆盖
继承export
命名规范 —name 私有属性
static静态方法 方法覆盖
ES6 中有 class 语法。值得注意是,这里的 class 不是新的对象继承模型,它只是原型链的语法糖表现形式。
extends 允许一个子类继承父类,需要注意的是,子类的 constructor 函数中需要执行 super() 函数。
关键字 class, extends, super
特点

非声明提升(hoisted) 和let一样

自动处于严格模式

需要new, 否则会抛错

重写类名和方法会抛错

有get set 方法

可以指定方法为static 。只能在class内部使用。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84067.html

相关文章

  • ES6—class与面向对象编程(8)

    摘要:接下来我们看下类的写法,这个就很接近于传统面向对象语言了。如果你想了解传统面向对象语言,这里是一个好切入点。作为对象时,指向父类的原型对象。这些就是为将来在中支持面向对象的类机制而预留的。 在ES5中,我们经常使用方法或者对象去模拟类的使用,并基于原型实现继承,虽然可以实现功能,但是代码并不优雅,很多人还是倾向于用 class 来组织代码,很多类库、框架创造了自己的 API 来实现 c...

    wangjuntytl 评论0 收藏0
  • 重新认识JavaScript面向对象: 从ES5到ES6

    摘要:基于原型的面向对象在基于原型的语言中如并不存在这种区别它只有对象不论是构造函数,实例,原型本身都是对象。允许动态地向单个的对象或者整个对象集中添加或移除属性。为了解决以上两个问题,提供了构造函数创建对象的方式。 showImg(https://segmentfault.com/img/remote/1460000013229218); 一. 重新认识面向对象 1. JavaScript...

    VishKozus 评论0 收藏0
  • 重新认识JavaScript面向对象: 从ES5到ES6

    摘要:基于原型的面向对象在基于原型的语言中如并不存在这种区别它只有对象不论是构造函数,实例,原型本身都是对象。允许动态地向单个的对象或者整个对象集中添加或移除属性。为了解决以上两个问题,提供了构造函数创建对象的方式。 showImg(https://segmentfault.com/img/remote/1460000013229218); 一. 重新认识面向对象 1. JavaScript...

    用户83 评论0 收藏0
  • javascript面向对象之“多态”

    摘要:之前,本质上不能算是一门面向对象的编程语言,因为它对于封装继承多态这些面向对象语言的特点并没有在语言层面上提供原生的支持。所以在中出现了等关键字,解决了面向对象中出现了问题。 ES6之前,javascript本质上不能算是一门面向对象的编程语言,因为它对于封装、继承、多态这些面向对象语言的特点并没有在语言层面上提供原生的支持。但是,它引入了原型(prototype)的概念,可以让我们以...

    JerryWangSAP 评论0 收藏0

发表评论

0条评论

cppprimer

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<