• js,php中的面向对象


    面向对象

    js中的面向对象:

    面向对象(OOP):通过函数封装得到的一个类

    1.类的本质还是函数

    1. 每个类(函数)天生有一个prototype的属性,这个prototype又是一个对象,这个对象里有个constructor(构造函数)的属性,属性值是类本身。
    2. 我们所有new 一个类的时候,其实是调用它的构造函数。构造函数里的属性都是私有的,构造函数里的this都是实例对象。
    3. 每个对象天生有一个__proto__,指向类的原型。

    2.Object 对象类的一个实例。

    3.Property 属性对象的特征,比如颜色。

      Prototype和__proto__

    1. prototype是类的或者函数的,__proto__是对象的
    2. Prototype是存储机制,程序员来实现。__proto__是查找机制(浏览器的)

      Zhangsan.name:

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

    4.封装  一种把数据和相关的方法绑定在一起使用的方法。

    5.继承  一个类可以继承另一个类的特征。

    6.多态  多意为「许多」,态意为「形态」。不同类可以定义相同的方法或属性。

    php中的面向对象:

    对象的主要三个特性

    1. 对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为。
    2. 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸,外型。
    3. 对象的表示:对象的表示就相当于身份证,具体区分在相同的行为与状态下有什么不同。

    通过修饰符给类添加成员:

    1. Public添加的成员是公有的,在类内,类外,子类都可以去访问他
    2. Protected受保护的。只能在类里面和子类访问,类外面不能访问
    3. Private私有的只能在类里面访问

    定义:

    • 类使用 class 关键字后加上类名定义。

    • 类名后的一对大括号({})内可以定义变量和方法。

    • 类的变量使用 var 来声明, 变量也可以初始化值。

    • 函数定义类似 PHP 函数的定义,但函数只能通过该类及其实例化的对象访问。

    构造函数:

    构造函数是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,在创建对象的语句中与 new 运算符一起使用。

    析构函数:

    析构函数(destructor) 与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。销毁前会自动调用__destruct()这个析构方法。

    继承:PHP 使用关键字 extends 来继承一个类,PHP 不支持多继承

    1. 子类继承父类 使用extends 关键字 子类继承父类
    2. 子类继承父类的属性和方法是有限继承
    3. public 修饰的属性和方法 子类都可以继承
    4. protected 修饰的属性和方法 子类都可以继承
    5. pravite 修饰的属性子类可以继承 修饰的方法子类不可以继承

    静态属性:

    • 使用static关键字定义的属性和方法,直接属于类,不会进入到对象上去。
    • 类如何防卫静态属性 类名::静态属性 1.::范围解析操作符 2.静态属性前加$

    静态方法和静态属性一样:
      静态方法中不能使用$this关键字,$this是实例对象,而对象不能访问对象成员,

    self指向类本身:
    类里面想操作静态成员,使用关键字self
    常量:(对象不能操作常量)
    类中使用关键字const定义常量成员 类中访问常量使用self

    JS对象克隆:
    1.对象跟变量之间的赋值 不是克隆 而是将对象的内存地址赋给变量,二者还是同一个对象
    2.js通过Object.create()克隆对象

    php中克隆 通过关键字clone:
    通过关键字clone对象的时候,其实是调用类中的隐藏函数 function _clone()
    如果不让类生成的实例对象被克隆,中隐藏函数function __clone前面加protected就可以了

     

     

     

     

     

     

     

  • 相关阅读:
    (转)OpenGL和D3D
    (转)海岸线提取完成, 海浪排岸效果
    (转)perlin噪声函数
    D3D 部分功能测试结论
    (转)学习directx遇到的问题
    D3D Lock Pool
    D3D渲染到纹理
    用Eclipse平台进行c/c++开发
    var读写和function读写,get/set读写效率比较
    flash fps游戏 fps多少为佳
  • 原文地址:https://www.cnblogs.com/1723466522gx/p/11362119.html
Copyright © 2020-2023  润新知