ES6類與對(duì)象

1.ES5創(chuàng)建類

 function User(name, age) {
    this.name = name;
    this.age = age;
}
// 靜態(tài)方法
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;    
}
// 繼承靜態(tài)方法
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創(chuàng)建類

'use strict'
class User {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }
    // 靜態(tài)方法
    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);

// 對(duì)象沒(méi)有提升
//let em = new Employee('eeee',11);//出錯(cuò)
class Employee extends User {
    // 默認(rèn)自動(dòng)加入constructor
    // constructor(...args){
    //     super(...args);
    // }

}
// let e = new Employee('zhangsan',20);
// console.log(e.info);

// 立即執(zhí)行類"實(shí)例化"
// let customer = new class Customer {
//     constructor(name) {
//         this.name = name;
//     }
// }('lisi');
// console.log(customer);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ES6(ECMAScript2015)的出現(xiàn),無(wú)疑給前端開(kāi)發(fā)人員帶來(lái)了新的驚喜,它包含了一些很棒的新特性,可以更加...
    cbw100閱讀 15,554評(píng)論 3 233
  • 你可能已經(jīng)聽(tīng)說(shuō)過(guò)ECMAScript 6(簡(jiǎn)稱 ES6)了。ES6 是 Javascript 的下一個(gè)版本,它有很...
    奮斗的小廢魚閱讀 806評(píng)論 0 16
  • 你可能已經(jīng)聽(tīng)說(shuō)過(guò)ECMAScript 6(簡(jiǎn)稱 ES6)了。ES6 是 Javascript 的下一個(gè)版本,它有很...
    米塔塔閱讀 1,022評(píng)論 0 10
  • 面向?qū)ο蟮恼Z(yǔ)言都有一個(gè)類的概念,通過(guò)類可以創(chuàng)建多個(gè)具有相同方法和屬性的對(duì)象,ES6之前并沒(méi)有類的概念,在ES6中引...
    Erric_Zhang閱讀 1,207評(píng)論 1 4
  • 一、ES6簡(jiǎn)介 ? 歷時(shí)將近6年的時(shí)間來(lái)制定的新 ECMAScript 標(biāo)準(zhǔn) ECMAScript 6(亦稱 ...
    一歲一枯榮_閱讀 6,208評(píng)論 8 25

友情鏈接更多精彩內(nèi)容