JavaScript面向对象-基础知识

面向对象

编程思想

  • 面向过程 (POP,Process-oriented programming)
    分析出解决问题所需要的的步骤,然后用函数把这些步骤一步步实现,使用的时候再一个个的一次调用
  • 面向对象 (OOP,Object Oriented Programming)
    把事物分成一个个对象,然后由对象之间分工与合作
    封装性,继承性,多态性
    *在ES6(ECMAScript6.0)之前,JavaScript中没有类的概念,在ES6之前,使用构造函数的方式创建对象

类 和 对象

  • 类: 抽象的事物 抽取对象公用的属性和行为组织成一个模板

  • 对象: 具体的事物 对类的实例化
    JavaScript中的对象: 一组无序的相关属性和方法的集合,所有的事物都是对象(包括但不限于字符串、数组、数值、函数等)
    对象由属性和方法组成

    • 属性 : 事物的特征
    • 方法 : 事物的行为

类创建基础语法

//创建类 类名首字母大写
class ClassName{
    //构造函数 用于传递参数,返回对象示例
    constructor(){
    
    }
    //在类中创建方法 不需要function关键字 多个方法间不需要','标识符分隔
    func(){}
}
//通过类创建对象
var c = new className();

类的继承

  • 子类可以继承父类的属性和方法
  • 子类可以扩展自身的方法
  • super关键字: 用于访问和调用对象父类上的函数(包括构造函数),构造函数中super必须在this之前调用
  • 属性和方法的查找原则: 就近原则
  • 在ES6之前使用’构造函数+原型对象’的方式模拟实现继承,也称组合继承

*示例

//父类
class Father{
    constructor(){}
    
    func(){}
}

//子类
class Son extends Father{
    constructor(){
        super();//调用父类构造函数
    }
}

//使用 
var son = new Son();
son.func(); //子类可以继承并调用父类的方法

注意点

  • ES6中 类没有变量提升,必须先定义类才能通过类实例化对象
  • 在类中的共有属性和方法,使用时必须添加this关键字
  • 注意类中的this指向,默认指向其调用者

使用构造函数创建类

//构造函数方式 定义类
function Star(uname,age){
    this.uname = uname;
    this.age = age ;
    this.func = function(){}
}

//类的使用
var c = new Star();

*首字母需要大写,需要使用new创建对象
*构造函数方式 浪费内存和开辟内存的运算资源 需要使用prototype实现原型分配的函数对所有对象的共享

原型对象

  • 可以将公用的方法直接定义在prototype对象上,使得所有对象的实例可以共享这些方法
  • 对象都会有一个__proto__属性指向构造函数的prototype原型对象
  • 原型对象函数中使用的this 指向的是 当前的实例对象
  • 可以通过原型对象进行内置对象进行自定义方法的扩展
//在原型对象上定义成员方法
Class.prototype.func = function(){
    ....
}

原型对象与对象原型

  • 原型对象 指类定义时所产生的prototype对象
  • 对象原型 指实例化对象中__proto__属性,该属性指向了该类的原型对象

静态成员 和 实例成员

  • 实例成员
    在构造函数内部通过this添加的成员,只能通过实例化的对象来进行访问

  • 静态成员
    在构造函数本身添加的成员,只能通过构造函数进行访问

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值