美文网首页
ES6中的class继承

ES6中的class继承

作者: 江寻月 | 来源:发表于2017-11-24 14:30 被阅读0次

ES6中的class继承

class Father {
    constructor() {
        this.faterAge = 40
    }
    fatherRun() {

    }
}  
class Son extends Father {  
    constructor(name) {
        super(name)
        this.name = name
    }
        sonLaugh() {

    }
}

Son.prototype.sonRun = () => {
    console.log('gogogo');
}

let son1 = new Son('son1');

let son2 = new Son('son2');

Son(constructor function)的隐式原型proto指向Father(constructor function);
Son 的显式原型prototype 指向Father的实例

console.log(Son.__proto__ === Father)                           // true  
console.log(Son.__proto__ === Father.prototype.constructor)     // true  
console.log(Son === Son.prototype.constructor)                  // true
console.log(Son.prototype instanceof Father)                    // true

子类对象上有子类的属性和父类的属性

console.log(son1.hasOwnProperty('name'));   // true
console.log('name' in son1);            // true
console.log(son1.hasOwnProperty('faterAge'));   // true
console.log('faterAge' in son1);        // true
console.log(Object.keys(son1))              // [ 'faterAge', 'name' ]

子类的实例方法,实际上被添加到其父类的实例上(可以理解为子类的类对象--是对父类对象的扩充)。
可以通过子类实例的proto,或者子类的prototype拿到该父类实例;

console.log(son1.hasOwnProperty('sonRun'));                         // false
console.log(son1.hasOwnProperty('sonLaugh'));                       // false
console.log('sonRun' in son1);                              // true
console.log('sonLaugh' in son1);                            // true


console.log(son1.__proto__ instanceof Father);                      // true
console.log(son1.__proto__.hasOwnProperty('sonRun'));               // true
console.log(son1.__proto__.hasOwnProperty('sonLaugh'));             // true

console.log(son1.__proto__.__proto__.hasOwnProperty('fatherRun'));  // true

class声明时添加的实例方法是不可枚举的,而直接向Son.prototype添加的实例方法是可枚举的

console.log(Object.keys(son1.__proto__))    // [ 'sonRun' ]

相关文章

  • [JavaScript] class

    ES6中的class基于原型继承创建类。 (1)class只是原型继承的语法糖 相当于: 注: class定义中...

  • react组件

    es6 的class类的继承 运用es6 class继承 通过继承React.Component类来定义一个组件

  • JavaScript ES6 class多重继承实践与总结

    ES6中,class原生是不支持多重继承的,根据阮一峰ES6参考资料中的方法,通过以下方式即可实现class继承多...

  • ES6

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

  • JS中类的继承封装和多态

    子类继承父类的属性和方法(原生继承,call继承,寄生组合继承,ES6中class类继承)原生继承:让子类的原型指...

  • ES5和ES6 实现继承方式

    在ES5 中:通过原型链实现继承的,常见的继承方式是组合继承和寄生组合继承;在ES6中:通过Class来继承 组合...

  • ES6中的class继承

    ES6中的class继承 Son(constructor function)的隐式原型proto指向Father(...

  • JavaScript继承

    es6继承 class Square extends Polygon {constructor(length) {...

  • class继承

    class继承是从ES6开始正式被引入到JavaScript中。class的目的就是让定义类更简单。 用函数实现 ...

  • ES6中Class的继承

    当你想要放弃了,一定要想象那些睡得比你晚、气的比你早、跑的比你还快、天赋比你还高的牛人,他们早已在晨光中,跑向那个...

网友评论

      本文标题:ES6中的class继承

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