js面向对象和PHP面相对象

Js面向对象:

    类 :具有相同的特征的一些对象的集合。

    对象 :具体到某一个事物了都可以叫作对象。

    类 :通过function 定义类 所以在js里类的本质是函数,

  类的标志  首字母大写   函数内部使用this  调用函数是使用new关键字

    1.类和函数天生有两个属性是prototype和__proto__

      Prototype又是一个对象天生有一个constructor的属性,属性值是函数和类本身

    2.普通对象天生有一个__proto__的属性,这个属性是对象,指向他的父类。

  引用关系: 

    function A(){}

    A.prototype.fn=function(){}

    A.prototype=function(){

      fn:function(){}

    }

    这两者有什么区别?

    前者不会改变原有的引用关系,而后者会改变原有的引用关系。

  拷贝:浅拷贝,深拷贝

Php面向对象

  1.创建类:class Person{}

  js面向对象和PHP面相对象

  2.创建对象:$p=new Person;

  js面向对象和PHP面相对象

  3.成员的添加

    添加成员需要 三个修饰符

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

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

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

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

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

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

  js面向对象和PHP面相对象  

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

  js面向对象和PHP面相对象

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

    js面向对象和PHP面相对象

  7.析构方法

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

    js面向对象和PHP面相对象

    先销毁$p1的

  8.成员赋值

    js面向对象和PHP面相对象

  9.继承  extends

    js面向对象和PHP面相对象

  10.常量

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

   使用常量的时候不能用$this 使用范围修饰符  :: 前面还是这个类名或self     (self只限在类内代替类名,类外还是只能用类名)

   子类中使用常量的话使用 parent

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

  12.重载 覆盖

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

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