美文网首页
ES6-面向对象

ES6-面向对象

作者: 你怀中的猫 | 来源:发表于2022-06-02 11:04 被阅读0次

1、区别

  • es5(js)中没有一个类的概念,只有构造方法
    在es6中 js模拟了其他语言实现类的概念,让对象可以由类来产生
    es6 虽然有了类,但是底层实现上 还是以原型对象的拷贝来实例化对象

  • 1、声明

ES5声明类

function Point(x, y) {
  this.x = x;
  this.y = y;
}

Point.prototype.toString = function () {
  return '(' + this.x + ', ' + this.y + ')';
};

let p = new Point(3, 4);

ES6声明类

class Point {
    //从底层上来讲,在类里面定义的属性和方法,都是之前的原型属性和方法
    // 构造函数
    //需要传参的属性,写到构造函数里面
    constructor(x, y) {
        this.x = x;
        this.y = y;
    }
    // 原型函数
    toString = function () {
        return '(' + this.x + ', ' + this.y + ')';
    };
}
  • 2、继承

js继承

  • 1、原型继承

1、子类.prototype = new 父类();
子类.prototype.constructor = 子类

2、子类.prototype = 父类.prototype;
子类.prototype.constructor = 子类

  • 2、构造函数继承

父类在子类中使用 父类.call/apply(this,....)
call()
apply() 参数是一个数组

es6继承 (extends)

class Man extends Person{
    sex = '男';
}

在类中使用自身的属性和方法,用this来使用

  • this.属性
    this.方法()

在子类中要使用父类的属性和方法 ,只能用super

  • super.方法()
  • 只有一种情况例外
    super如果在子类的constructor中,代表着 父类的 constructor

static 修饰一个类属性或类方法

  • 只有类能使用的属性和方法,只能通过类名调用
class Man{
    static a = 123;
    static says(){
        console.log(789789789789);
    }
}

console.log(Man.a);  // 123
Man.says(); 

私有/公有

class Person{
    constructor(){
        this.money = 5678; // 公有
        var money1 = 789789; // 私有
    }
    
    // money = 34567; //公有
    //私有属性
    _money = 789;
    // set  get
    set m1(m){
        this._money = m + 10000;
    }

    get m1(){
        return this._money;
    }
}

var p1 = new Person();
console.log(p1.money);
console.log(p1.m1); //789,一开始设置的那个值
p1.m1 = 5000;
console.log(p1.m1);  // 15000

总结

  • 1、class :定义类的关键字
  • 2、 extends : 子类继承父类 (定义子类时使用)
  • 3、constructor : 构造函数(需要传参的属性,写到构造函数里面)
  • 4、static : 定义类属性, 只有类能使用的属性和方法,只能通过类名调用
  • 5、super : 如果放在子类的构造函数中,直接代表 父类的构造函数

相关文章

  • ES6-面向对象

    1、区别 es5(js)中没有一个类的概念,只有构造方法在es6中 js模拟了其他语言实现类的概念,让对象可以由类...

  • ES6-面向对象与继承

    一:类 二、静态方法 三、继承 3-1:继承的使用 3-2:重写父类方法demo1 demo2

  • 2019-01-24

    ES6-之 filter

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • PHP全栈学习笔记8

    面向对象的基本概念,面向对象编程,oop,面向对象,面向对象的分析,面向对象的设计,面向对象的编程,什么是类。 类...

  • ES6-对象

    一、 对象表达式 如果想在对象里添加跟变量名一样的属性,并且属性的值就是变量表示的值,我们可以直接在对象里加上这...

  • ES6-对象

    Object.is()方法 在js中比较两个值时,你可能会用相等运算符==或者严格相等运算符 ===。为了避免在比...

  • 总结.Net基础知识——献给即将入坑的同行们(一期)

    什么是面向对象 面向对象OO = 面向对象的分析OOA + 面向对象的设计OOD + 面向对象的编程OOP; 通俗...

  • 面向对象基础

    面向对象编程包括: 面向对象的分析(OOA) 面向对象的设计(OOD) 面向对象的编程实现(OOP) 面向对象思想...

  • 20-OOP类与对象

    面向对象 Object Oriented 学习面向对象:XXOO 面向对象的学习: 面向过程和面向对象的区别: 面...

网友评论

      本文标题:ES6-面向对象

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