美文网首页
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);

相关文章

  • JS基础:面向对象编程

    目录一. 类与对象 1. ES5里的构造函数(constructor)与对象的生成 2. ES6里的类(class...

  • ES6

    ES6是一个语言标准,不是一个框架。 ES6中的class与继承 class是创建类对象与实现类继承的语法糖,旨在...

  • ES6类与对象

    1.ES5创建类 1.ES6创建类

  • day06-前端面试技巧-(面向对象)

    类与实例: 类的声明es5: es6中class的声明 生成实例实例类的对象(es5和es6的实例化方式是一样的)...

  • JavaScript 面向对象编程

    写法 ES6面向对象的写法---类继承

  • JavaScript-13 ES6和对象

    ES6类和对象 在ES6之前如果定义一个类? 通过构造函数来定义一个类 在ES6之前定义类就是构造函数,静态属性和...

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

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

  • 原型与原型链详解

    前言 与大部分面向对象语言不同,ES6之前并没有引入类(class)的概念,JavaScript并非通过类而是直接...

  • TS 笔记七 类

    一、ES6中的类 参考js红宝书笔记九 第八章 类与面向对象编程[https://www.jianshu.com/...

  • 面向对象(ES5与ES6类的继承解析)

    面向对象的语言都有一个类的概念,通过类可以创建多个具有相同方法和属性的对象,ES6之前并没有类的概念,在ES6中引...

网友评论

      本文标题:ES6类与对象

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