美文网首页
es6解读4: 类

es6解读4: 类

作者: HowlEagle101Div | 来源:发表于2017-10-27 14:35 被阅读0次

类的基本定义和生成实例:class

class Parent{
    constructor(name='leilei'){
        this.name=name;
    }
}
let v_parent=new Parent('ymy');
console.log(v_parent.name) //ymy

类的继承 :extends

class Parent{
    constructor(name='leilei'){
        this.name=name;
    }
}
class Child extends Parent{
    //继承:子类怎么在自己的构造函数中传递参数
    constructor(name='child'){
        super(name);//如果不传参,子类使用的是父类默认的参数;super一定放在构造函数的第一行;
        this.type='child';
    }
}
console.dir(new Child('hello'))  //Child类 ==> name='hello',type='child'

类中的getter 和 setter

  • 分别用来设置属性和获取属性
class Parent{
  constructor(name='leilei'){
      this.name=name;
  }
  get longName(){
      return 'ymy '+this.name;
  }
  set longName(value){
      this.name=value;
  }
}
// 创建实例
let p1=new Parent();
console.log(p1.longName) //获取属性 ymy leilei
p1.longName='tangtang'; //设置属性
console.log(p1.longName) //获取属性 ymy tangtang

给类中添加静态方法 static

  • 注意:static属性只能用来设置类的静态方法,不能用来设置类的静态属性
  • 类的静态属性只能通过: 类.key=value;来设置
  • 类的静态方法,只有类能使用,实例不能使用,实例只能使用原型上的属性和方法;
class Parent{
  constructor(name='leilei'){
      this.name=name;
  }
  //设置静态方法
  static tell(){
      console.log('tell');
  }
}
Parent.sex='gril';  //设置类的静态属性
Parent.tell() //调用类的静态方法; tell

类的 prototype 属性和proto属性

大多数浏览器的 ES5 实现之中,每一个对象都有__proto__属性,指向对应的构造函数的prototype属性
。Class 作为构造函数的语法糖,同时有prototype属性和__proto__属性,因此同时存在两条继承链。

(1)子类的__proto__属性,表示构造函数的继承,总是指向父类。

(2)子类prototype属性的__proto__属性,表示方法的继承,总是指向父类的prototype属性。
class A {
}

class B {
}

// B 的实例继承 A 的实例
Object.setPrototypeOf(B.prototype, A.prototype);
// 等同于
B.prototype.__proto__ = A.prototype;

// B 的实例继承 A 的静态属性
Object.setPrototypeOf(B, A);
// 等同于
B.__proto__ = A;

const b = new B();

相关文章

  • es6解读4:类

    类的基本定义和生成实例: class 类的继承: extends 类中的getter和setter 分别用来获取属...

  • es6解读4: 类

    类的基本定义和生成实例:class 类的继承 :extends 类中的getter 和 setter 分别用来设置...

  • 第八周第二天笔记

    ES6之Promise类 1 Promise类基础知识解读 promise类的静态属性方法分类:resolve()...

  • ES6解读3:类class

    类的继承 类的getter和setter方法 静态方法以及静态属性 注意:静态方法只能是类调用,不能实例调用

  • JavaScript-13 ES6和对象

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

  • 深入理解JS面向对象 - JavaScript实现继承的五种方式

    一、类与实例 1. 类的声明 传统function类的声明 ES6中的class声明 1.1 ES6 class与...

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

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

  • JavaScript入门——类(五)

    类定义(ES6) ES6 的类只是基于原型的语法糖;更易用。类支持基于原型的继承、调用父类、实例和静态方法,构造器...

  • 深入es6之class

    es5定义一个类 es6定义一个类 es6原型方法(内部this是实例化的类) 静态方法(内部this是类) 继承

  • es5 es6静态方法、类、单例模式

    es5中的类和静态方法 es5继承 es6中的类 es6里面的继承 es6里面的静态方法 es6单例模式 转载:h...

网友评论

      本文标题:es6解读4: 类

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