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

Posted wkxdd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈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实例化的时候,系统会给这个对象分配一个内存空间,内存空间分一个栈内存,一个堆内存,将变量存在栈里,将代码块存在堆里,然后将堆内存地址指向栈中的变量,如果再给这个栈中的变量赋值引用数据类型,那么这个内存地址会被更改。

技术图片

 

以上是关于浅谈js面向对象与深入php面向对象的主要内容,如果未能解决你的问题,请参考以下文章

《深入PHP:面向对象模式与实践》

浅谈PHP面向对象编程

读《深入PHP 面向对象模式与实践》笔记

浅谈PHP面向对象编程(九设计模式)

在Objective-C中浅谈面向对象

浅谈JS面向对象之创建对象