浅谈js面向对象与深入php面向对象

js面向对象:

  类?什么是类?类是一些具有相同特征的对象的集合

  什么是对象?就是具体到某一个事物了,都可以叫做对象

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

类和函数天生有两个属性,一个是prototype,一个是__proto__

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

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

什么是原型链?原型链就是操作obj.属性的时候,首先看这个属性是私有的还是公有的,私有的有就直接使用,私有没有的话就看公有的,公有的有就使用,没有就通过__proto__向父类的原型上查找,有就使用,没有就继续向上查找,知道基类object为止。

引用关系:

  

上图两者的区别:

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

php面向对象:

  类的创建,通过class创建类

  

  创建对象需要使用new关键字

类 成员的添加与访问:

  类成员有属性,方法和常量

  添加属性需要使用范围修饰符:

      1、public :类外,类内,子类都可以访问

      2、protected:在类内和子类内访问

      3、private:只能在自己的类内访问

  访问属性的时候变量名不带$符

  添加方法,如果方法前不带修饰符,则默认是public

  添加常量:使用关键字const,格式:

      

类内部对象$this和内存原理

   $this他是一个对象,指向实例化的哪个对象

当我们new实例化的时候,系统会给这个对象分配一个内存空间,内存空间分一个栈内存,一个堆内存,将变量存在栈里,将代码块存在堆里,然后将堆内存地址指向栈中的变量,如果再给这个栈中的变量赋值引用数据类型,那么这个内存地址会被更改。

 

posted @ 2019-05-22 08:51  web小白一号  阅读(156)  评论(0编辑  收藏  举报