#面对对象编程和面对过程编程
##1.面对对象
根据事务分成若干个对象,根据对象的功能点,然后对象间分工合作
优点:利于复用,便于维护
特点:封装性(使用构造函数)
继承性(extends可以继承父系的方法和属性)
多态性,抽象(可以具有不同的数据类型或表现出不同的行为)
##2.面对过程
根据事务分成若干个步骤,一步一步来实现功能
优点:简单方便性能优
#类与对象
##类
class即为类,是一个泛指,比如汽车
注意:
1.class c 是小写
2.类名首字母要大写
3.在类里面定义方法 不需要加function 关键字
4.方法与方法之间不需要逗号
##对象
object即为对象,是一个具体的事物,例如比亚迪汽车,万物皆对象,包括函数,数组等都是对象
##新建类,然后使用类来新建对象
class Person{
constructor(name){
// 构造器。
this.name = name;
}
}
var person = new Person('zs'); //利用类,新建了person的对象,'zs'实参传递到constructor构造器中!
##类中添加方法,对象使用类里面的方法为
ldh.sing(’冰雨‘) //对象点方法(实参)
// 1. 创建类 class 创建一个 明星类
class Star {
// 类的公有属性放到 constructor 里面,后续新增的对象都可以用该属性
constructor(uname, age) {
this.uname = uname;
this.age = age;
}
sing(song) {
console.log(this.uname + song);
}
}
// 2. 利用类创建对象 new
var ldh = new Star('刘德华', 18);//实参('刘德华', 18)传入到constructor
var zxy = new Star('张学友', 20);
console.log(ldh); // Star{ uname:'刘德华',age:'18'}
console.log(zxy); // Star{uname:'张学友',age:'20'}
// (1) 我们类里面所有的函数不需要写function
//(2) 多个函数方法之间不需要添加逗号分隔
ldh.sing('冰雨'); //刘德华唱冰雨,调用Star类里面的sing方法
zxy.sing('李香兰'); //张学友唱李香兰,调用Star类里面的sing方法
##类的继承,和属性方法调用
继承父类的方法和属性,利用extends来继承,super关键字访问父类的方法
class Father {
constructor(x, y) {
this.x = x; //this指向被调用对象num
this.y = y;
}
sum() {
console.log(this.x + this.y); //this指向被调用者num对象
}
}
class Son extends Father {
constructor(x, y) {
super(x, y); //调用了父类中的构造函数
}
}
var num = new Son(12, 20); // 新增的对象为:num{x:12,y:20}
num.sum(); //运算结果为:32