美文网首页
ES6类与对象

ES6类与对象

作者: 小线亮亮 | 来源:发表于2017-11-15 21:10 被阅读0次

    1.ES5创建类

     function User(name, age) {
        this.name = name;
        this.age = age;
    }
    // 静态方法
    User.getClassName = function () {
        return 'User';
    }
    User.prototype.changeName = function (name) {
        this.name = name;
    }
    User.prototype.changeAge = function (age) {
        this.age = age;
    }
    Object.defineProperty(User.prototype, 'info', {
        get() {
            return 'name:' + this.name + ' | age:' + this.age;
        }
    });
    /* var user = new User('lucky',30);
    console.log(user.info); */
    // 定义子类
    function Manager(name,age,password) {
        User.call(this,name,age);
        this.password =password;    
    }
    // 继承静态方法
    Manager.__proto__ = User;
    // 继承prototype方法
    Manager.prototype = User.prototype;
    // 添加新方法
    Manager.prototype.changePassword = function(password){
        this.password = password;
    }
    
    var m = new Manager('xxxx',30,'123');
    console.log(m.name);
    m.changeName('yyyy')
    console.log(m.name);
    console.log(m.info);
    

    1.ES6创建类

    'use strict'
    class User {
        constructor(name, age) {
            this.name = name;
            this.age = age;
        }
        // 静态方法
        static getClassName() {
            return 'User';
        }
        changeName(name) {
            this.name = name;
        }
        // 定义属性info
        get info() {
            return 'name:' + this.name + ' | age:' + this.age;
        }
    }
    // 定义子类
    class Manager extends User {
        constructor(name, age, password) {
            super(name, age);
            this.password = password;
        }
        changePassword(password) {
            this.password = password;
        }
        // 覆盖父类info
        get info() {
            let info = super.info;
            console.log(info);
            return 'new info ------';
        }
    }
    // let m = new Manager('baby',6,'123456');
    // console.log(m.info);
    
    // 对象没有提升
    //let em = new Employee('eeee',11);//出错
    class Employee extends User {
        // 默认自动加入constructor
        // constructor(...args){
        //     super(...args);
        // }
    
    }
    // let e = new Employee('zhangsan',20);
    // console.log(e.info);
    
    // 立即执行类"实例化"
    // let customer = new class Customer {
    //     constructor(name) {
    //         this.name = name;
    //     }
    // }('lisi');
    // console.log(customer);
    

    相关文章

      网友评论

          本文标题:ES6类与对象

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