zoukankan      html  css  js  c++  java
  • js面向对象与PHP面向对象总结

    js面向对象

    1.什么是对象?

      对象:任何实体都是对象,拥有属性和方法两大特征

      属性:描述事物的特点;

      方法:实物拥有的行为;

    2.在JS里

      Person.name="zhang"

      Person.fn=function(){}

    3.js中如何去生成对象?

      (1)单例模式/字面量定义 var obj={name:"zhang"}

      (2)var obj=new Object() 内置类

          Obj.name="zhang"

          js内置的类 string array object number boolean  date function

      (3)工厂模式

          function create(){

            var obj={}

            Obj.name=

            return obj;

          }  

      (4)构造函数

          function Person(){

            this.name="li"

          }

          var zhang=new Person()

    4.this的问题

        this是关键字,它是一个对象;

        函数外 this指向window;

        函数内看带不带. 带.就是.前面的对象,不带.就是window

    5.原型prototype

      每个函数 类天生自带一个prototype的属性,这个属性是个对象,它里面天生自带一个constructor的属性,属性值是当前函数/类本身;

      每个实例对象 天生自带一个__proto__的属性,这个属性是对象,它指向当前实例对象的类的原型

    6.类的继承

      对象复制

        (1)通过for in 将父类的所有属性变成子类的私有属性

        (2)Object.create() 将父类的属性复制成子类公有的属性

      <1>原型继承

        将父类的实例赋值给子类的原型,父类实例的所有属性成了子类的公有属性

      <2>call继承 将父类私有的继承为子类私有的

        改变this指向的方法:

        a.call() 

          fn.call(div,)将fn中的this换成div然后再把fn调用;

        b.apply()

        c.bind()

        d.提前声明;

       <3>冒充对象

          冒充对象继承利用for in  将父类的所有属性继承为子类私有的

       <4>混合继承 call继承和原型继承结合

         私有的继承为私有的,私有的和公有的再次继承为公有的

       <5>组合继承(寄生式继承)  call继承和克隆的结合

         <6>中间类继承  

          伪数组

       <7>拷贝继承

          浅拷贝

          深拷贝

            

            

    PHP面向对象:

      1.类的创建 class创建类

       

      2.对象的创建  使用new关键字;

       

      3.成员的添加;

       添加成员需要三个修饰符

        public  公开的,定义公共的属性和方法,类的外部,类的内部,子类都可以使用;

        protected  受保护的,定义受保护的属性和方法 只能在类的内部和子类里使用

        private  私有的,定义私有的属性和方法,只能在自身的类里使用

        方法成员如果前面不加修饰符,默认是public;

      4.成员调用使用->符号;

        

        使用成员属性和方法的时候,属性和方法前面不带$符

        

      5.特殊对象$this指向实例化的对象,如果类的方法里想使用类的其他属性和方法得需要使用$this对象

        

      6.构造方法 function__construct()  构造函数在new实例化的时候系统会自动调用

        

      7.析构方法

       我们每次new实例化,系统就会给这个对象分配一个内存空间,如果不销毁,系统压力会很大,系统有一个析构方法 __destruct对象实例化之后系统会自动调用。内存销毁的原则是先进后销。

        

      8.成员赋值

       

      9.php中的继承使用关键字extends

       

      10.类中常量 使用const关键字定义常量,常量在定义和使用的时候不能带$符。

       使用的时候不能用$this  使用范围修饰符 :: 前面还是这个类名或self

       

       如果子类想访问父类中的常量 使用parent::常量名

       

      11.静态变量 在变量前加上关键字 static 静态属性 不能使用->访问了,使用类名::$变量名:

       

      12.重载 覆盖

       子类继承父类的方法时,如果子类有和父类同名的方法,从父类那继承的方法就会被覆盖掉,这个就叫重载;

       如果父类的方法前面加上final 则子类无法重载父类的方法,就会报错。

       

      13.调用父类的构造方法

       php不会在子类的构造方法中自动的调用父类的构造方法,要执行父类的构造方法,需要在子类的构造方法在调用parent::__construct().

     

     

    面向对象三大特征

      封装:对外只告诉你如何操作,内部结构不需要你知道。

         对外只提供可操作的接口(方法),对内的数据操作不可见

        

      继承:子类可以继承父类的属性和方法,但是有限继承,public protected private 修饰的属性可以继承protected public 修饰的方法 子类可以继承,父类的常量也可以继承。

        

      多态:php没有多态,因为php是弱类型语言,不会对变量提前进行类型声明,但是有重载;

      重载:父类和子类 方法相同 子类会覆盖父类的方法。js也有重载。

     

     

     

       

     

     

       

     

  • 相关阅读:
    保护个人劳动成果----------代码混淆 (war/jar)
    获取计算机所有属性硬件信息
    得到某个文件夹下所有的文件名称
    下载的方法
    shell停止/启动/重启tomcat
    线程超时
    2020 0508 开通博客
    spring mvc 的一些状态码
    restful接口设计规范总结 转发的 第一次接触时候发现的文章(个人觉得不错)
    spring mvc常用注解
  • 原文地址:https://www.cnblogs.com/yuanjingjing/p/10679389.html
Copyright © 2011-2022 走看看