面向对象

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就可以了

js,php中的面向对象的更多相关文章

  1. js中的面向对象入门

    什么是对象 我们先来看高程三中是如何对对象进行定义的 "无序属性的集合,其属性可以包括基本值.对象或者函数",对象是一组没有特定顺序的的值.对象的没个属性或方法都有一个俄名字,每个 ...

  2. 深入解读 Js 中的面向对象编程

    前言:今天看了一篇文章觉得很不错,所以给大家分享一下,也许很多人都看过面向对象编程甚至写过这样博客,觉得面向对象编程就那样,没啥好说的,那可能是因为你对这方面知识已经了解,可以选择性跳过.那如果有更通 ...

  3. Day046--JavaScript-- DOM操作, js中的面向对象, 定时

    一. DOM的操作(创建,追加,删除) parentNode 获取父级标签 nextElementSibling 获取下一个兄弟节点 children 获取所有的子标签 <!DOCTYPEhtm ...

  4. 前端 ---JS中的面向对象

    JS中的面向对象   创建对象的几种常用方式 1.使用Object或对象字面量创建对象 2.工厂模式创建对象 3.构造函数模式创建对象 4.原型模式创建对象 1.使用Object或对象字面量创建对象 ...

  5. python 全栈开发,Day52(关于DOM操作的相关案例,JS中的面向对象,定时器,BOM,client、offset、scroll系列)

    昨日作业讲解: 京东购物车 京东购物车效果: 实现原理: 用2个盒子,就可以完整效果. 先让上面的小盒子向下移动1px,此时就出现了压盖效果.小盒子设置z-index压盖大盒子,将小盒子的下边框去掉, ...

  6. 前端JavaScript(3)-关于DOM操作的相关案例,JS中的面向对象、定时器、BOM、位置信息

    小例子: 京东购物车 京东购物车效果: 实现原理: 用2个盒子,就可以完整效果. 先让上面的小盒子向下移动1px,此时就出现了压盖效果.小盒子设置z-index压盖大盒子,将小盒子的下边框去掉,就可以 ...

  7. 简单分析JavaScript中的面向对象

    初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...

  8. JS高级学习路线——面向对象进阶

    构造函数进阶 使用构造函数创建对象 用于创建对象 其除了是一个函数之外,我们又称之为构造对象的函数 - 简称构造函数 function Product(name,description){ //属性 ...

  9. JavaScript从初见到热恋之深度讨论JavaScript中的面向对象。

    JavaScript中的面向对象.面向对象的三个基本特征:封装.继承.多态. 1.封装 js的封装如下 定义Person类 function Person(name,age,sex) { this.n ...

  10. Java script 中的面向对象1

    Java script 中的面向对象 对象 对象是Javascript的基本数据类型,对象是一种复合值,将很多的键值对聚合在一起使用.对象可看做是属性的无序集合,每个属性都是一个名/值对.属性名其实是 ...

随机推荐

  1. 阿里云服务器中MySQL数据库被攻击

    前几天刚领了一个月的阿里云服务器玩,在里面装了MySQL,然后这几天找了个小项目练习着玩呢,就将表建在里面了. 刚访问添加员工还好好的,刚给员工分页查询呢 ,啪一下 ,很突然昂 ,就访问不了了 ,看控 ...

  2. Node.js学习笔记----day04之学生信息管理系统

    认真学习,认真记录,每天都要有进步呀!!! 加油叭!!! 一.起步 项目结构 安装需要的包 初始化显示index.html index.html var express = require('expr ...

  3. 【HMS Core】使用机器学习服务和搜索服务识别植物

    ​1.介绍 总览 机器学习服务(ML Kit)为开发者提供简单易用.服务多样.技术领先的机器学习能力,助力开发者更快更好地开发各类AI应用.同时,搜索服务(Search Kit)通过端侧SDK和云侧A ...

  4. 亲测有效! Scrutiny 网站SEO检测及优化工具 V12.6.1 for mac

    亲测有效! Scrutiny 网站SEO检测及优化工具  V12.6.1 for mac Scrutiny是一款网站SEO工具,它能够自动检测目标网站的坏链.HTML验证.描述Description. ...

  5. quasar打包时:Module not found: Can't resolve imported dependency "dayjs/plugin/customParseFormat"

    运行quasar build -m electron 后,报错如下: 看了这篇webpack 编译 element-plus 报错后,找到了报错的根源所在 于是,在quasar官方文档找到了针对web ...

  6. Postgresql 除法保留小数位

    一.示例 select 8/(100-3) as c1,  round(8/(100-3) ,4) as c2,  round(8/(100-3)::numeric ,4) as c3,  8/(10 ...

  7. dotnet core 托管

    1.托管形式 dotnet core的托管形式分为 进程内托管(InProcess).进程外托管 (OutOfProcess) 新建的Web程序csproj带有 <AspNetCoreHosti ...

  8. lg7335 [JRKSJ R1] 异或 题解

    本题的标签中含有trie,但是这道题可以不用trie做. 考虑列出本题的dp方程:设\(f_{k,i}\)表示前\(i\)个数选了\(k\)段的答案,\(s_i\)为数组的前缀异或和 当不选择第\(i ...

  9. Python3中Super函数的使用

    Super函数用法 主要用于调用父类函数 代码演示 class A: def __init__(self): self.n = 2 print('此时执行A的自定义函数,self的n值为',self. ...

  10. ubuntu 22.04 网络配置ib网卡配置

    第一步:查看Ubuntu版本与内核版本 cat /etc/issue 这说明系统的版本为:Ubuntu 20.04.4 LTS \n \l uname -a Linux gacs-gm-11 5.4. ...