javascript类和对象

编程思想

面向过程: POP(Process-oriented programming)
优点: 性能比面向对象高,步骤联系紧密
缺点: 不好维护,不易多次使用及扩展

面向对象: OOP(Object Oriented Programming)
优点: 易维护,可复用, 可扩展, 灵活性高
缺点: 性能没有面向过程高
面向对象是将事务分解成为一个个对象,然后由对象之间分工与合作

面向对象三大特性

  • 封装性
  • 继承性
  • 多态性

ES(ECMAscript)6中类和对象

类(抽象) : 泛指大面积相同类型
属性: 共有属性
方法: 共有方法

对象(具体) : 类中具体的某一个实例

  • 属性: 对象有什么,固有的东西(访问)
    语法: 对象.属性
  • 方法: 对象做什么,要去做什么(执行)
    语法: 对象.方法()

1. 创建类

语法: class 类名{属性和方法} //类名首字母大写,公共属性和方法

构造函数	// 只要对类实例化 就可以得到一个对象
class Star{}
var obj = new Star();

对象 instanceof 构造函数
arr instanceof Array;// 判断arr是否是数组

2. 类constructor构造函数

构造函数就是用来添加属性的
类中所有的函数,不带function,直接写即可

语法: 	//属性要放到构造函数中constructor
class Star{
    constructor(uname,age,sex){
        this.uname = 属性值;
        this.age = 属性值;
    }
}
var obj = new Star('丢丢',18,'男');
console.log(obj);
var obj2 = new Star('洛洛',17,'女');
console.log(obj2);
//属性名和属性值写成一个,便于记忆;

this: 当前实例对象
Star: 类
uname,age,sex: 形参

//每次new一个类就会自动执行构造函数,构造函数中的this,代表的是当前new的实例对象,new谁this就代表谁

3. 类添加方法

class Star {
    //属性
    constructor(){}
    //方法
    方法名(函数名)(){
    }
}

4. 类的继承

extends 继承
class Father{// 父类
    constructor(uname,age){
        this.uname = uname;
        this.age = age;
    }
}
class Son extends Father{// 子类
   //怎么继承父class属性?
}
var obj = new Son();

super关键字 = 以调用父类的构造函数和普通函数
如果子类有自己的构造函数时,想要继承父类函数就用super,调用父类构造函数和方法
super(父类传参);	//既可以继承,又可以有自己的属性
要想调用父类的同名方法时,super.方法名()
如果子类不写东西,那么直接继承父类就可以用,但是如果子类有自己的构造函数和父类同名的方法,此时不可以直接用父类的东西,需要用super调用父类的方法和构造函数.
ES6 三个注意点
  1. 没有域解析,不会变量提升,必须要先定义类,再去实例化对象
  2. 在类里面调用属性或者方法一定要用this调用
    • 不论在哪里调用属性和方法,都要加上对象.属性(方法)
  3. this指向: 是函数就可以加this
    • 构造函数里面的this指向一定是当前实例化对象
    • 方法里面的this,是调用者, 谁调用this指的就是谁

ES(ECMAscript)5中类和对象

  1. 创建对象
字面量创建对象
var obj = {
    name:'小狗',
    age:22,
    sex: '男',
    fn: function(){
        console.log('哈哈哈');
    }
}// 方法:  加括号即调用,不加括号即访问
构造函数创建对象	//构造函数 = Object
var obj = new Object();
obj.uname = '小新';
// 系统自带对象属性Object
  1. 自定义构造函数
function Star(uname,age)
	this.uname = uname;
	this.age = age;
}
var obj = new Star('海绵宝宝',5);

1. 自定义构造函数本质还是一个函数
2. 自定义构造函数可以写多个,Object只有一个
3. 构造函数和new一起使用才有意义,对象碰到new,就会有独立空间

静态成员和实例成员

构成对象属性和方法,就叫成员

  • 在构造函数身上的成员叫静态成员
  • 静态成员只能由构造函数访问

在构造函数内部的成员叫实例成员

  • 实例成员只能由实例对象访问
  • 属性是简单数据类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值