面向对象

面向对象编程OOP

优缺点 面向对象 面向过程
优点 易维护,易复用、易扩展,由于面向对象有封装、继承、多态的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护 性能比面向对象高,适合跟硬件联系很紧密的东西,例如单片机就采用的面向过程的编程
缺点 性能比面向过程低 没有面向对象易维护、易复用、易扩展

用面向过程的方法写出来的程序时一份蛋炒饭,而面向对象写出来的程序时一份盖浇饭。

面向对象

面向对象更加贴近实际生活,可以用面向对象的描述现实世界十五,但事物分为具体的事物和抽象的事物。

面向对象的思维特点:

1.抽取对象共同的属性和行为(封装)成一个类(模板); 2.对类进行实例化,获取类的对象。 面向对象编程考虑的是有哪些对象,按照面向对象的思维特点,不断的创建对象。

对象

对象是一个具体的事物,在javascript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象。 例如字符串、数值、数组、函数等

对象是由属性和方法组成的。
属性:事物的特征,在对象中用属性来表示。(名称)
方法:事物的行为,在对象中用方法来表示。(动词)
类 class

类抽象了对象的公共部分,它泛指某一大类(class)对象特指某一个,通过类实例化一个具体的对象。 类抽象了对象的公共部分,它泛指某一大类(class)。

对象特指某一个, 通过类实例化一个具体的对象。

// 创建一个class 创建一个明星类
1.通过类class关键字创建,类名习惯定义首字母大写
class Star {
2.constructor 函数,可以接收传递过来的参数,同时返回实例对象
 3.constructor 函数,只要new 生成实例时,就会自动调用这个函数,如果不写这个函数,也会自动生成这个函数
    constructor(uname,age){
        this.uname = uname;
        this.age = age;

    }

}
4.生成实例 new 不能省略
// 利用类创建对象 new
var ldh = new Star('刘德华',20);
var zxy = new Star('张学友',30);
5.最后注意语法规范,创建类名后面不要加小括号,生成实例类名后面加小括号,构造函数不需要加function
console.log(ldh);
console.log(zxy.uname);


--------------
class Star {
    constructor(uname ,age ){
        this.uname = uname;
        this.age = age;
    }song
    sing(song){
        console.log(this.uname + song);
    }
}
var ldh = new Star ('刘德华', 18);
var zxy = new Star('张学友', 20);
ldh.sing('丙戌');
zxy.sing('李香兰');
继承

子类可以继承父类的属性

class Father {
    constructor(){

    }
    money(){
        console.log(100);
    }
}
class Son extends Father {

}
var son = new Son();
son.money();
几个注意点:

1.在es6中,类没有变量提升,所以必须先定义类,才能通过类实例化对象;

2.类里面的共有属性和方法一定要加this使用;

3.类里面的this只想问题;

4.constructor里面的this指向实例对象,方法里面您的this指向这个方法的调用者。

面向对象
JSRUN前端笔记, 是针对前端工程师开放的一个笔记分享平台,是前端工程师记录重点、分享经验的一个笔记本。JSRUN前端采用的 MarkDown 语法 (极客专用语法), 这里属于IT工程师。