IT新手入门,零基础学IT,转行做IT,IT行业的职位选择,你我一同探讨!

IT新手入门网给你介绍IT行业的职位有哪些,让你转行做IT不发愁,IT入门有捷径

当前位置: 主页 > 技能提升 > HTML5/前端互联网工程师 > 面向对象三大特点:封装,继承,多态(二十一)

面向对象三大特点:封装,继承,多态(二十一)

时间:2017-02-11 19:03来源:原创 作者:恪己 点击:
正课: 1. *****OOP 封装 继承 一. 封装: 创建对象: 3种: 1. 对象直接量: var obj={ 属性名:属性值, ... : ... , 方法名: function(){ ...this.属性名... } } 问题: 对象自己的方法,如何访问当前对象自己的
一. 封装: 创建对象: 3种:
   1. 对象直接量:
       var obj={    
          属性名:属性值,         
                ...  :  ... ,    
          方法名: function(){  
             ...this.属性名...
          }
       }
   问题: 对象自己的方法,如何访问当前对象自己的属性呢?
   错误: 直接写属性名: 报错: 变量名未定义
   解决: 任何对象自己的方法,想使用自己的属性,都必须:
              this.属性名   其中: this.翻译为: 当前对象的xxx
this: 在方法调用时,自动获得正在调用方法的.前的对象
     比如: lilei.intr() :  intr中的this->lilei
     原理: this在函数调用时,自动存储在函数作用域对象(AO)中
              被自动设置为引用当前函数.前的对象
     方法中: 不加this.的变量,默认仅在作用域链中找
                 加this.的属性,被引导到当前对象中找属性,不再查找作用域链。
   2. 用new: 2步:
       var obj=new Object();  new可省, ()可省, 不能同时省略
       obj.属性名=属性值;
       obj.方法名=function(){ ...this.属性名... };
       何时: 在创建对象时,暂时不知道对象的成员
   揭示: js中一切对象底层都是关联数组
             对象的属性名其实是关联数组的key
             对象的属性值其实是关联数组的value
      后果: 对象的成员: 对象["属性名"]
                     对象.属性名 <==> 对象["属性名"]
                     对象.key                 对象["key"]
               对象可随时添加新属性
               用for in遍历对象的每个属性
  问题: 以上两种方法只适合创建一个对象
          如果反复创建多个相同结构,但值不同个对象,会导致大量重复代码!
  解决: 先定义对象的结构,再用相同结构反复创建对象
  3. 构造函数(constructor):
     什么是构造函数: 描述一类对象统一结构的特殊函数
     何时: 只要反复创建多个结构相同,但值不同的一类对象时,都要先定义构造函数,再用构造函数反复创建对象
     如何: 2步:
        1. 定义构造函数:
            function 类型名(属性参数){
this.属性名=属性参数;//向新对象中添加新属性
                 this.方法名=function(){//向新对象中添加新方法
        ... this.属性名 ...
                 }
            }
        2. 用new调用构造函数,传入属性值作为参数,获得新对象

     

------分隔线----------------------------
栏目列表
推荐内容