第205天:面向对象知识点总结

简介: 一、面向对象和传统开发的区别面向对象开发分析需要的对象分析每个对象需要的属性和方法依次实现每个对象面向对象编程(直接使用封装好的方法)传统开发四要素 – 牢记定义变量保存数据获取元素绑定元素绑定事件二、jsonJSON全称为JavaScript对象简单表示法(JavaScript Object Notation)即通过字面量来表示一个对象,从简单到复杂均可使用此方式。

一、面向对象和传统开发的区别

面向对象开发

  1. 分析需要的对象
  2. 分析每个对象需要的属性和方法
  3. 依次实现每个对象
  4. 面向对象编程(直接使用封装好的方法)

传统开发四要素 – 牢记

  1. 定义变量保存数据
  2. 获取元素
  3. 绑定元素
  4. 绑定事件

二、json

JSON全称为JavaScript对象简单表示法(JavaScript Object Notation)

即通过字面量来表示一个对象,

从简单到复杂均可使用此方式。

1字面量创建的对象和json对象区别

 

 

 


2json语法规范

Json虽然语法规则要求加个” ”,但是其实不加也是正确的。

字面量其实就是原型对象的一个实例。

我们在使用对象的字面量形式(json)的时候不需要再实例化

3json协议

json是一个协议,只要我们将数据转换成这个格式,就能实现传输,至于如何传输的,不必知道

4Json协议和json对象有什么关系

JSON协议事实上已经作为一种前端与服务器端的数据交换格式,是一种国际标准。他不是语言,他只是一个规范,按照这种规范写法就能实现数据传递。

ajax,后台一般传递给我们的数据格式是json字符串,我们拿到数据之后,将其转化成json对象,再做其他处理

5json对象和字符串的转换

json对象转化成json字符串

JSON.stringify(obj)JSON转为字符串

var aToStr=JSON.stringify(a);

 

json字符串转化成json对象

通过eval() 函数可以将JSON字符串转化为对象。

JSON.parse(string)将字符串转为JSON对象;

var bToObj=JSON.parse(b);

 

json是数据传输通用协议

三、XML

Xml只是描述数据的一种结构

1XML作用

树结构存储数据

文本数据库

统一通信协议

不同平台之间通讯

htmlxml的一种结构

 

前后台沟通的桥梁xml、 json

既可以用json 也可以用xml

Web前端开发 json更流行

2Xml语法规则

  • 所有 XML 元素都须有关闭标签
  • XML 标签对大小写敏感
  • XML 必须正确地嵌套
  • XML 文档必须有根元素
  • XML 的属性值须加引号

3Jsonxml的相同点和不同点

相同点:

都是一种通用协议

都可以用来描述数据

不同点:

JSON相对于XML来讲,数据的体积小,传递的速度更快些。

xml专用带宽大,json占用带宽小

json没有xml这么通用

json可以和js对象互相转换,和js是天生的一对,因此广泛用于前端开发

XML已经被业界广泛的使用,而JSON才刚刚开始,但是在Ajax这个特定的领域,未来的发展一定是XML让位于JSON。到时Ajax应该变成Ajaj(Asynchronous Javascript and JSON)

 

四、构造函数

1、构造函数和普通函数的区别

对象其实是使用函数实现的

对象本身就是一个函数

如果一个函数用于创建对象,我们一般称之为构造函数。

2、构造函数四种创建方式

参数传参

默认值

动态添加属性

混合模式

 

3、构造语法规范

成员(属性)定义规范:

this.name

成员(方法)定义规范:

this.buy=function(){
        alert('buy')
    }

属性访问 - 点语法

 

4Instanceof

如何判断某个实例是否是根据某个构造函数创建的

If(p1 instanceof Product){

Alert(‘true)

}

 

 

js构造函数本身就是一个函数,所以拥有函数的一切的特性

如果return一个对象,则new的时候返回的是return的对象

 

5、实例拷贝原理

内存分配会自动拷贝构造对象的所有属性,并赋以实例的值

当你实例化一个对象,那么内存中会开辟两个内存区域:一个保存实例名称变量:其保存的只是地址

一个保存对象的真正的数据

6constructor

1,实例化的过程其实就是拷贝构造函数属性的过程

2,除了拷贝以外还会自动生成一个constructor属性,用于识别其是根据哪个构造函数创建的实例。

 

7、构造函数和原型对象的区别

构造函数创建的实例不能共享属性和方法,浪费内存

原型对象中的工具被所有实例所共享

一般将大家都公有的东西放在原型对象中

每个实例独特的不一样的属性放在构造函数中

五、双对象法则

1通过原型方式创建对象的原理

通过原型创建对象,其实创建的是两个对象

构造函数对象

原型对象

当我们实例化的时候,该实例自动拷贝构造函数的所有属性和方法,而对于原型对象,则不拷贝,而是通过一个属性‘铁链’

2双对象的名称

构造函数对象的名称:就是函数名称

原型对象的名称:古怪点:函数名称.prototype

双对象第一个对象:构造函数(对象)

构造函数对象

构造函数对象中的属性方法

构造属性 方法

双对象第一个对象:原型对象

原型

原型对象

原型属性 原型方法

3hasOwnProperty() 方法

可以判定一个属性是存在于构造对象的实例上还是原型对象上。该 方法继承自 Object

如果是实例对象ture

如果是原型对象false

4、面向对象的三个作用

面向对象编程

描述数据 - -对象的字面量形式--json

封装框架

5、创建对象的方式

字面量

Object

内置对象

构造函数

原型对象

拷贝

工厂

第三方

 

6、面向对象三大对象

内置对象

字符串,数组,日期,正则,数字,数学,错误,函数

BOM对象

windows document location history

自定义对象

HTTPHyper Text Transfer Protocol,超文本传输协议;

FTPFile Transfer Protocol,文件传输协议;

简单说HTTP是面向网页的,而FTP是面向文件的。

7innerHTMLinnerText

innerHTMLinnerText的区别:

就是对HTML可以放置html代码,Text不会输出HTML代码

Text只有IE支持,不建议使用

alert(document.getElementById("p1").innerText);

alert(document.getElementById("p2").innerHTML);

8new 的本质

当我们new 一个实例后,系统自动做了如下事情

创建一个空对象  var p = {}

拷贝构造函数中的方法属性到空对象中

自动成生一个属性_proto_指向类的原型p.__proto__ =  XXXX.prototype

 

9Object对象是Function对象的一个实例

所以Object__proto__属性指向Function对象的原型

Object._proto_===Function.prototype

所有内置对象都是Function对象的实例

Object和 任何函数都是指向Function.prototype

五、面向对象三大特性

封装

继承

多态

继承可以减少代码重复

我们一般将相同的属性放在父类中

自己独特的属性放在自身对象中

继承就是定义一个新的对象,继承另一个对象的方法和属性

前面通过原型方式创建一个对象A,其可以使用Object中的所有属性和方法,这里我们就说A对象继承了Object对象。

继承的本质就是通过__proto__指针指向某个对象,系统能够自动链式访问所指向的对象的属性方法

 

整个js世界都继承自Object,都可以访问Object中的方法和属性。

所以,Object是所有对象的祖先,是生命诞生的鼻祖

所有的内置对象都继承在Object,除了拥有自身的方法和属性之外,还拥有Object的所有属性和方法

 

相关文章
|
存储 监控 C++
OPC服务器与客户程序设计
OPC服务器与客户程序设计
|
Ubuntu Linux 网络安全
使用Kali Linux虚拟机破解WiFi密码的一波三折及详细操作步骤
使用Kali Linux虚拟机破解WiFi密码的一波三折及详细操作步骤
4749 0
使用Kali Linux虚拟机破解WiFi密码的一波三折及详细操作步骤
|
11月前
|
API C++ 开发者
PySide vs PyQt:Python GUI开发史诗级对决,谁才是王者?
PySide 和 PyQt 是 Python GUI 开发领域的两大利器,各有特色。PySide 采用 LGPL 协议,更灵活;PyQt 默认 GPL,商业使用需授权。两者背后团队实力雄厚,PySide 得到 Qt 官方支持,PyQt 由 Riverbank Computing 打造。API 设计上,PySide 简洁直观,贴近原生 Qt;PyQt 增加 Pythonic 接口,操作更高效。性能方面,两者表现优异,适合不同需求的项目开发。选择时可根据项目特点与开源要求决定。
1146 20
|
存储 分布式计算 大数据
基于阿里云大数据平台的实时数据湖构建与数据分析实战
在大数据时代,数据湖作为集中存储和处理海量数据的架构,成为企业数据管理的核心。阿里云提供包括MaxCompute、DataWorks、E-MapReduce等在内的完整大数据平台,支持从数据采集、存储、处理到分析的全流程。本文通过电商平台案例,展示如何基于阿里云构建实时数据湖,实现数据价值挖掘。平台优势包括全托管服务、高扩展性、丰富的生态集成和强大的数据分析工具。
|
监控 供应链
医院管理信息系统源代码,中小医院云HIS系统源码
HIS系统是医院信息化的核心,涵盖门诊、住院、药房、财务等模块。其功能包括患者管理、电子病历、医生工作站、护士工作站及临床诊疗等,实现从挂号收费到住院结算全流程自动化管理,提升医疗服务效率与质量。该系统通过综合管理与统计分析,优化医院运营。
680 12
|
JavaScript 前端开发 开发者
决战前端之巅!Element UI与Vuetify谁才是Vue.js组件界的霸主?一场关于颜值与实力的较量!
【8月更文挑战第30天】本文对比了两款热门的Vue.js组件库——Element UI与Vuetify。Element UI由饿了么团队打造,提供多种高质量UI组件,设计简洁大方。Vuetify基于Material Design规范,支持Vue.js 2.0及3.0版本,具备前瞻性。两者均涵盖表单、导航、数据展示等组件,Element UI配置选项丰富,而Vuetify则提供了更深层的样式定制功能。开发者可根据项目需求及个人偏好选择合适的组件库。
1424 0
|
Prometheus Kubernetes 监控
使用kubectl快速查看各个节点的CPU和内存占用量
在Kubernetes集群中,安装metrics-server,并使用kubectl快速查看集群中各个节点的资源使用情况。
1547 0
|
数据挖掘
提高调查有效性:问卷设计技巧与常见错误避免
设计合格的调查问卷需明确目标、构建清晰结构、编写简明问题并预测试与修改。目标决定数据收集的方向,结构保证逻辑连贯,问题应避免引导性,使用通俗语言。预测试能优化问卷,数据分析则提炼出有价值信息,支持决策。注意问题类型的选择,如封闭式和开放式,确保数据的有效收集。
1445 4
|
存储 Python
使用django构建一个多级评论功能
使用django构建一个多级评论功能
251 0
|
分布式计算 Hadoop 大数据
Hadoop与Spark在大数据处理中的对比
【7月更文挑战第30天】Hadoop和Spark在大数据处理中各有优势,选择哪个框架取决于具体的应用场景和需求。Hadoop适合处理大规模数据的离线分析,而Spark则更适合需要快速响应和迭代计算的应用场景。在实际应用中,可以根据数据处理的需求、系统的可扩展性、成本效益等因素综合考虑,选择适合的框架进行大数据处理。