JS学习:第一周——NO.3面向对象

【面向对象基础知识】

  1. 封装:对于功能相同的代码,我们只需封装一次,以后再遇到类似的功能,只需调用即可,无需重写,避免大量冗余代码。
  2. 对象的特征:方法和属性;
  3. 面向对象的特点:
  • 封装:低耦合高内聚;
  • 继承:子类继承父类的属性和方法,但是不影响父类的功能;
  • 多态:主要包括重载和重写;
  • 备注:①重载:JS没有严格意义上的重载,但是有类似重载的功能,传不同的参数可以实现不同的功能,

②重写:子类可以重写父类的方法属性;

【单例模式】(本质就是对象)

  1. 单例模式优缺点:

(1)实现模块化开发,是最简单的模块化开发

①不同模块之间的相互调用:对象名.属性名;

②本模式之间的相互调用:this.属性名;

(2)避免全局变量名的冲突

注意:引入各个模块,需要注意引入顺序,引入顺序按照各个模块之间的相互依赖进行前后排列。

  1. 模块化开发:对于一个大型的项目,项目组合分配给不同的工程师同步开发,等所有的工程师都开发完成的时候,进行项目的随后合并。

【工程模式】(本质就是普通函数的封装)

三步骤:

(1)引进原材料——创建一个空对象;

(2)加工对象   ——输出对象;给对象添加属性和方法;

(3)输出产品——返回对象,return 对象;

优缺点:

优:避免了单例模式中的大量冗余代码,进行系统的封装;

缺:跟系统内置类的调用方式不同;

【构造函数】(1.首字母大写,2.;3.构造函数中存放的都是私有属性和方法)

  1. 和工厂模式的不同;

1)调用的时不同:

工厂模式:调用的时候,只是普通的函数的调用

构造函数模式:new   CreatPerson();

2)函数体内不同;

工厂模式三步:创建对象;加工对象;返回对象;

构造函数:只有加工对象,因为系统会默认为其创建对象和返回对象

2.构造函数:可以创建一个自定义的类,并且可以new出实例,构造函数主要是实例和类打交道;

3.细节:①构造函数中的this都是new出来的实例;②构造函数中存放的都是私有属性和方法;

③构造函数系统默认返回this,不建议手动返回,如果非要自己手动返回:

a:手动返回的时字符串类型:对以前实例上的属性和方法没有影响;

b:  手动返回的是引用数据类型:以前实例身上的属性和方法就会被覆盖,实例无法调用属性和方法

④构造函数再调用的时候,如果没有参数,小括号可以省略;

⑤构造函数就是类和实例在打交道;

⑥构造函数中带var跟实例没有任何关系,实例只跟this.xxxx有关;

【原型模式】

1.原型模式:主要是类  实例  和原型;

2.原型的基础知识:☆☆☆☆☆☆

①每个函数数据类型(普通函数,类)上,都有一个属性,叫prototype,是一个对象;

②prototype这个对象上,天生自带一个属性,constructor指向当前这个类;

③每个对象数据类型(普通对象,prototype,实例)都有一个属性,叫做__proto__;指向当前实例所属类的原型;

3.Object。prototype上面的属性和方法:

hasOwnProproperty判断是否是私有;

判断公有属性:function hasPubProperty(attr, obj) {

return attr in obj && !obj.hasOwnProperty(attr);}

isPrototypeOf判断前一个对象是否在原型链上;

propertyIsEnumerable

4.条件反射知识点:

1)构造函数:构造函数中的属性和方法都是私有的;

2)构造函数中的this都是实例;

3)prototype上的属性和方法都是公有的;

4)构造函数模式:实例和类;

5)原型模式:实例 类  原型;

6)__prototype__:原型链;

7)当给  类.prototype={}   这样赋值的时候,constructor指向会出问题

【原型链】

定义:如果想查找  对象.属性名:

1.会先在自己的私有空间中进行查找,找到的话,说明X是私有属性

2.找不到:通过__proto__去当前实例所属类的原型上进行查找,找到的话,说明是共有属性;

3.找不到:继续通过__proto__去当前实例所属类的原型进行查找,找不到将继续通过__proto__一直找到Object

instanceof:检测实例属于某个类

“x” in Fn:判断某个属性是否再对象上,包括私有和共有属性;

.hasOwnProperty(‘ ‘):判断是否为私有属性;

IE下禁止使用__proto__;

【学习原型链模式的好处】:

1)了解系统提供的类的构成;

2)可以提供更多的学习机会,比如  ,ary.keys不知道;可以通过查询来扩充自己的知识范围;

3)可以给系统内置类扩充更多的方法,便于团队里的合作开发者。

【耦合与内聚】

耦合性:也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息

内聚性:又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。

所谓高内聚是指一个软件模块是由相关性很强的代码组成,只负责一项任务,也就是常说的单一责任原则。

耦合:一个软件结构内不同模块之间互连程度的度量。

对于低耦合,粗浅的理解是:一个完整的系统,模块与模块之间,尽可能的使其独立存在。也就是说,让每个模块,尽可能的独立完成某个特定的子功能。模块与模块之间的接口,尽量的少而简单。如果某两个模块间的关系比较复杂的话,最好首先考虑进一步的模块划分。这样有利于修改和组合。

  1. 类数组包含两种:1)arguments;2)元素集合;
时间: 2024-10-17 17:57:59

JS学习:第一周——NO.3面向对象的相关文章

201671010140. 2016-2017-2 《Java程序设计》java学习第一周

   java学习第一周        本周是新学期的开端,也是新的学习进程的开端,第一次接触java这门课程,首先书本的厚度就给我一种无形的压力,这注定了,这门课程不会是轻松的,同时一种全新的学习方式:反转课堂,全新的尝试,忐忑的同时,又对这段新的学习路途充满了期待.         第一章,其实就是对java这门课程学习的一个铺垫和前期热身,第二章则是帮助我们了解并试着运用有关工具及了解java开发环境,通过阅读书本,相关课件,相关工具使用文件,同时在上机操作的过程中逐渐吸收知识.     

【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验【中英】

[吴恩达课后测验]Course 1 - 神经网络和深度学习 - 第一周测验[中英] 第一周测验 - 深度学习简介 和"AI是新电力"相类似的说法是什么? [ ?]AI为我们的家庭和办公室的个人设备供电,类似于电力. [ ?]通过"智能电网",AI提供新的电能. [?]AI在计算机上运行,??并由电力驱动,但是它正在让以前的计算机不能做的事情变为可能. [★]就像100年前产生电能一样,AI正在改变很多的行业. 请注意: 吴恩达在视频中表达了同样的观点. 哪些是深度学

吴恩达深度学习课程第一课 — 神经网络与深度学习 — 第一周练习

课程一 - 神经网络和深度学习 第一周 - 深度学习简介 第 1 题 “人工智能是新电力”这个比喻指的是什么? A.人工智能为我们的家庭和办公室的个人设备供电,类似于电力. B.通过“智能电网”,人工智能正在传递新一波的电力. C.人工智能在计算机上运行,因此由电力驱动,但它让计算机做以前不可能做的事情. D.与100年前开始的电力类似,人工智能正在改变多个行业. 第 2 题 以下哪些是最近深度学习开始崛起的原因?(选2个答案) A.我们拥有了更多的计算能力 B.神经网络是一个崭新的领域. C.

Java学习第一周

第一周学习了JDK的安装和环境的配置,初步了解了Java与C的不同之处,学习了Java的变量.基本数据类型.以及面向对象的基础.并且自行完成了一些简单Java程序的编写. (1)学习了为什么使用抽象类,使用抽象类是为了让程序员在继承时不会忘记复写, abstract class Printer { void open() { System.out.println("open "); } void close() { System.out.println("close"

JAVA学习第一周博客

20145333 <Java程序设计>第一周学习总结 教材学习内容总结 第一章 Java平台概论 Java三大平台:Java SE.Java EE与Java ME Java SE的四个组成部分:JVM.JRE.JDK与Java语言 JRE包括Java SE API和JVM,JDK包括Java程序设计语言.JRE和开发工具. 如果要运行Java程序,必须安装JRE:如果要开发Java程序,必须要取得JDK. 第二章 从JDK到IDE JVM是Java程序唯一识别的操作系统,对JVM来说,可执行文

Linux 学习第一周

第一周的学习成果 1.冯诺依曼体系2.终端类型:虚拟终端:ctrl+alt+F2~F6 /dev/tty/2~6图形化终端 ctl+alt+F2~F6 /dev/tty/13.cat /etc/shells 查看当前系统安装的shellecho $SHELL 查看当前使用何种shell4.type command5.which command6.enable command 查看已启用的内部命令-n 查看已禁用的内部命令 配合|wc -l 可查看禁用数量-a 查看所有内部命令7.hash 显示已

JS学习第一天----JS概述

JavaScript概述 今天开始正式学习JavaScript(以后简称JS).所谓的JS语言是面向web的编程语言,我们可能接触过面向过程和面向对象的编程语言.为什么要学习JS呢?因为绝大多数现代网站都使用了JS,并且所有的的现代web浏览器----基于桌面系统,游戏机,平板电脑和智能手机的浏览器----均包含了JS解释器,这使得JS能够称得上是史上使用最广泛的编程语言.JS也是前端开发工程师必须掌握的三种技能之一:描述网页内容的HTML,描述网页样式的CSS以及描述网页行为的JS. JS是一

node.js学习第一天

执行代码console.log('hello world'); 2.回调函数 由于node是一个异步事件驱动的平台,所以在代码中我们经常需要使用回调函数.下面是回调函数应用的经典示例: setTimeout(function(){ console.log('callback is called'); },2000); 我们传给setTimeout函数传入了一个匿名函数和一个调用时间2000(毫秒),运行程序后等待2秒,可以看到输出了“callback is called”. 问题一:如果你要为s

Linux运维学习第一周总结

目录 一.Linux的文件系统与目录结构 二.shell的简介 三.改变终端的显示的用户名.主机名前缀.目录路径后缀 四.当执行一条命令时的查找顺序 五.使用shell脚本编写自己的时间命令 六.文件的时间戳 七.文件的硬链接和软连接 八.管道与输入输出重定向 九.练习题难点 十.总结 一.Linux的文件系统与目录结构 在Linux中一切皆可以被看作是文件,文件和目录被组织成一棵单根倒置树,根在上,枝.干.叶在下.如图所示: 各级目录简介: 1.        /  根目录,位于目录的最顶端,