JS_core_2.JavaScript OOP原型与继承

1 面向对象OOP

1.1 面向对象

对象:程序描述现实中一个具体事物的属性和功能的程序结构。事物的属性会成为对象的属性,事物的功能会成为对象的方法。
面向对象编程: 程序都是先将数据和功能定义在对象中,再按需使用对象的数据和功能
优点:便于大量数据和功能的维护和使用
特点:封装、继承、多态

1.2 封装

封装:创建对象集中保存一个事物的属性和功能,便于大量数据和功能的管理和使用
面向对象编程都要先封装对象,再按需使用对象的属性和功能

  1. 用{}直接量:

      var 对象名={
        属性名:属性值,
            ... : ... ,
        方法名:function(){
          ... this.成员 ...
        }
      }
    

    对象的方法要访问对象自己的属性或方法,无法直接使用,这是因为所有对象的属性和方法默认都不在作用域链当中,任何程序无权自动进入对象中获取成员(没有加任何前缀的普通变量只能在当前作用域查找)
    解决方法:不能直接在方法中使用对象名.成员名(紧耦合,每次更改需要同时改变函数内部的变量);只要对象自己的方法,要使用自己的成员,都要加this.属性名
    this指定对象自动获得正在调用方法的.前的对象名,只与调用方法时的前缀有关,而与定义方法时的前缀无关

  2. 用new创建

     //创建空对象
     var obj=new Object();
     //添加新成员
     obj.属性名=值;
     obj.方法名=function(){};
    

    本质:js中一切对象底层都是关联数组
    js中对象的特点:

    1. 对象创建完成后,依然可继续添加新成员
    2. 访问对象中不存在的属性,不报错!而是返回undefined
    3. 访问对象的成员,既可用.,又可用[“成员名”]
      选择: 如果成员名是变化的,就必须用[变量]
      如果成员名固定,就可用.简化与[""]等效

    缺点: 一次只能创建一个对象;如果反复创建多个相同结构的对象时,代码重复很多

  3. 用构造函数创建统一类型的多个对象:
    构造函数: 描述一类对象统一结构的函数,重用创建对象的代码!

    1. 定义构造函数:

         function 类型名(属性参数...){
         		  this.属性名=参数; 
         		  this.xxx = 值;
         		  this.方法名=function(){
         		    ...this.属性名 ...
         		  }
          }
      
    2. 调用构造函数反复创建多个对象:
      var obj=new 类型名(属性值,…)
      new:

      1. 创建一个新的空对象:var obj = {};
      2. 让子对象自动继承构造函数的原型对象obj.__proto__ = Base.prototype;
      3. 调用构造函数: Base.call(obj);
        通过强行赋值的方式,为新对象obj添加规定的新属性,保存属性值</
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值