面向对象

JS面向对象


1.JS面向对象的含义:通过函数封装得到的有一个类(函数);

2.每个类(函数)天生有一个prototype的属性,这个prototype又是一个对象,这个对象里有个constructor(构造函数)的属性,属性值是类本身。

3.我们所有new 一个类的时候,其实是调用它的构造函数。构造函数里的属性都是私有的,构造函数里的this都是实例对象。

4.每个对象天生有一个__proto__,指向类的原型。

5.Prototype和__proto__

prototype是类的或者函数的,__proto__是对象的

Prototype是存储机制,程序员来实现。__proto__是查找机制(浏览器的)

6.原型链

首先定义一个对象,其次看这个对象的属性是否是私有的,是就直接使用,不是的就通过__proto__往他的类的prototype上查找,有就直接使用,没有就继续向上查找,直到查找到基类Object,没有就是undefined,有就直接使用。这种查找机制 叫原型链。

7.面向对象有三大特点 :封装 继承 多态

封装:把所有相关的属性和方法封装在一个对象里。
继承:自己没有的属性或者方法,把别人的拿来用。
多态:不同的对象根据事件情况,执行代码不同。

8.JS继承

  1.原型继承:将父类的实例赋值给子类的原型私有的公有的都继承为公有的

 

2.call继承 call方法是 函数、类天生自带的一个方法,将父类私有的继承为子类私有的

 

3.冒充对象继承将父类私有的和公有的继承为子类私有的 使用for in

 

类:私有的

  公有的

  Fn.call(obj跟fn的参数匹配) 拿obj取代fn中的this然后调用fn

4.混合继承 私有的继承为私有的, 公有的即成为公有的 Call继承和原型继承的结合

 

5.    组合继承 私有继承为私有 公有继承为公有

  私有继承为私有借助  call

  公有继承为公有  不是原型赋值给原型

  因为原型是对象是复合数据类型,复合数据类型是地址赋给了前者,导致二者指向同一个原型,得克隆)

  Var  obj2=object.create(obj1);

 

 

6.中间类继承

 

  数组中的最小值

 

php面向对象

1.class面向对象的定义:是一种程序设计模式,简称oop

2.<1类 通过关键字 class 定义类  类名首字母要大写

   <2对象 是类的实例 通过new 关键字 得到一个实例对象 new classname

   <3通过访问修饰符 给类添加成员

  Public 添加的成员是公有的,在类内 类外 子类 都可以去访问他

  Protected 受保护的。 只能在类的里面和子类访问 类的外面不能访问

  Private 私有的 只能在类的里面访问。

  如果成员前面没有加修饰符 默认是public

 <4实例对象使用 -> 访问类里面的成员

    

  对象->属性的时候 属性前面不加$符。

  构造函数 constructor

  New 实例对象的本质 其实就是调用对应类的构造函数。

  $this 是类的实例对象

      

  析够函数

  我们new 实例的时候其实是调用构造函数,函数调用的时候会开辟内存空间,调用完之后会自动销毁。销毁前会自动调用 __destruct 这个析构方法

       

  继承extends

  子类继承父类  使用extends 关键字 子类继承父类中属性和方法。

  子类继承父类的属性和方法是有限继承。

  Public public修饰的属性和方法 子类都可以继承

  Protected   protected修饰的属性和方法 子类都可以继承

  Pravite   pravite 修饰的属性子类可以继承 private修饰的方法子类不可以继承

3.面向对象的三大特征

  1.封装

  将数据和操作数据的方法捆绑在一起,对外隐藏,只提供操作的接口

  2.继承

  子类继承父类中的属性和方法

  3.多态

  PHP是弱类型语言没有多态这个概念,有重载

  子类和父类的方法名相同,子类会覆盖父类的方法叫做重载

  多态是强类型语言才有的

posted @ 2019-08-16 08:44  无码歧途  阅读(117)  评论(0编辑  收藏  举报