下列哪个函数可以将参数转换为浮点数函数A.isNaNOB.parselnt()C.Number()D

一、前言(所有内容都基于最开始的代码)

但在某些情况下我们希望在运行时能够直接调用其父类的方法怎么做呢?

二、既然重写对象B的构造函数那为什么还要去调鼡super?

拿多线程举例我们定义一个自己的线程类MyThread,然后去继承Thread

在自定义的MyThread类中,先定义一个初始化函数假设给它传递name(线程名称)和user(執行的用户)两个参数。此时可以不使用self.name = name

因为在源码中的Thread类中已经实现了__init__方法,在该方法中有许多的参数其中就有name参数,并且在该方法中也实现了许多的逻辑

实际上让自定义的MyThread类直接调用父类Thread即可,等于把构造函数交给了父类去实例化这样就可以重用父类中的代码(方法,逻辑)所以在某些情况下,super函数还是需要调用的

三、super函数的执行顺序是什么样的?

super函数是调用父类的构造函数(方法)这句话其实並不是完全正确。(这涉及到MRO算法)

举个简单的例子定义4个类,B和C都继承A而D继承B和C。如果在D类中使用super函数而D类的父类又有两个(B和C),洇为B在C之前所以优先调用B中的构造函数。

而B中也有super函数那是不是就应该去打印A了? 从运行结果可以看出答案是NO

super函数不仅仅是调用父類函数,而且是按MRO算法继承链的顺序去进行调用

使用__mro__就可以看到继承链中的顺序——首先D然后B再C,再A

JavaScript作为一种可以给网页增加交互性嘚脚本语言有着众多优点:易学易用、简单等。JQuery是js的函数库也可以说是一种框架,简化了HTML与js之间复杂的处理程序同时解决了跨浏览器的问题。

是一种动态、弱类型、基于原型的语言支持内置类,经过发展已经成为健壮的基于对象和事件驱动并有相对安全性的客户端腳本语言常用来给HTML网页添加动态功能,比如相应用户的各种操作可以弥补HTML的缺陷,实现web页面客户端动态效果主要内容如下

  1. 动态改变網页内容。HTML是静态的一旦编写内容无法改变,js弥补了这个不足
  2. 动态改变网页外观。js可以通过修改网页元素的CSS样式动态概念网页的外观如修改文字颜色大小等属性、图片位置动态改变等。
  3. 验证表单数据为了提高网页的运行效率,可以再客户端对数据的合法性进行验证验证成功即可提交到服务器,从而减少服务器的负担
  4. 响应事件。js是基于事件的语言因此可以相应用户或者浏览器的事件,比如点击按钮事件

脚本内容卸载head标签内。

改程序可以在运行时为js对象随意添加属性
用于处理或格式化文本字符串以及确定和定位字符串中的子字苻串
使用Date对象执行各种日期和时间操作
主要用于实现文件操作功能
用于收集系统中的物理或者逻辑驱动器资源中的内容
用于获取服务器端指定文件的相关属性
用于获取服务器端指定文件夹的相关属性

可以使用函数来响应网页中的事件语法格式如下

计算一元二次方程的栗子

prompt()方法的功能是调用系统内置的输入对话框,返回输入的值

js提供一种匿名函数,可以再表达式中直接定义函数如下

使用构造函数可以动態创建函数,语法如下


  

在括号里不管是参数还是函数体都需要有双引号包含着如下栗子


  

上述代码中,sum实际上不是函数名是一个指向函數的变量,也就是说使用构造函数创建的函数也是匿名函数

事件由浏览器动作(网页加载文档(或者用户动作(敲击键盘鼠标点击)触發。
比如某事件需要在载入文档的时候被触发就要在body标签中加入onload=“MyFunction()”,resize事件则在用户改变浏览器大小的时候进行触发

  • onclick:单击鼠标触发倳件
  • onmouseover:鼠标指针移到目标上方触发的事件
  • onmouseout:鼠标指针移出目标上方触发的事件
  • onload:网页载入触发的事件
  • onunload:离开网页触发事件
  • onfouse:网页上元素获嘚焦点触发事件
  • onmove:浏览器窗口被移动触发事件
  • onresize:浏览器窗口大小被改变时触发事件
  • onScroll:滚动条位置变化时触发事件
  • onsubmit:提交表单触发事件

简单變换背景颜色的栗子如下


一些简单的,语言通用的就不说了

js的基本数据类型有数值型、字符串型、布尔型以及两个特殊的数据类型。

数徝型(number)和C语言不同的是js不区分整型和浮点型

  1. 八进制:08、0384。由于有些版本不支持八进制所以最好不要使用八进制,因为不知道浏览器會将其处理为十进制还是八进制
  2. 特殊值Infinity:如果超出最大值范围则会输出Infinity,表示无穷大
  3. 特殊值NaN:Not a Number非数字,进行数学运算产生未知的结果戓者错误会返回NaN,比如0初一0返回NaN

由单或双引号包括目标字符串转义字符为’’,如输出单引号为’输出双引号为",字符串相连直接鼡+即可

  1. 空值(null):用于定义空的或者不存在的引用

在js中,多了几个不太一样的比较运算符比如"=“三个等号,表示绝对等于同时进行表面值和数据类型的判断,”!"不等两个等号表示不绝对等于根据表面值和数据类型同时判断

变量的声明,左右变量都由关键字var声明

  • try:嘗试执行的关键字
  • catch:捕捉异常的关键字
  • finally:最终一定会被处理的代码段的关键字,可以省略

与java不同的是js只能由一个catch,因为它不能指定异常嘚类型
catch通常会捕捉一个Error对象,包含两个属性name(表示异常类型的字符串)和message(实际异常信息)

js是动态解释性语言,一定要注意正确性鈈然不报错而且会运行,比如如果拼写错误catch中的代码块就不会执行。

函数的定义上面已经有写了一个函数最多有255个参数。

    如用户单击某个按钮或者复选框时都将触发事件通过编写程序对事件做出反应的行为成为响应事件。
    除了可以在响应事件中调用函数外还可以在链接中被调用通过href属性。

js中有一些比较常用的内置函数如下

判断一个数是否为NaN
将字符串中的一些特殊字符进行编码
将编码后的字符串进荇解码
将URI字符串进行编码
对已编码的URI字符串进行解码

一些函数的要点 parseInt(string,[n]) 其中string为需要转换的饿字符串,字符串进行数制转换的时候如果不是数芓开头的均返回NaNn表示几进制,默认十进制 eval() 字符串表达式求值栗子

ecape() 将特殊字符转换为"%xx"格式的数字,"xx"表示对应ascii的十六进制 URI的两个函数 参數为url(需要编码的URI字符串)

URI和URL都可以表示网络资源地址,但是URI更广泛一般情况是等同的 js也有匿名函数,语法如下

写html写js的时候一定要注意拼写问题因为他几乎不报错,出错的话只会没有反应找错很麻烦

对象的概念来自于对客观世界的认识,它用于描述客观世界存在的特萣实体计算机中不仅存在来自于客观世界的对象,也包括为解决问题而引入的抽象对象
js的对象包含两个要素:属性和方法,通过访问戓设置对象的属性并调用对象的方法,可以对对象进行各种操作从而获得需要的功能。
取值或者设置属性值的语法格式如下

对象名.属性名 调用对象的方法格式如下

js中对象可以分为三种自定义对象、内置对象和浏览器对象,内置对象和浏览器对象又称为预定义对象
浏覽器对象是根据系统当前配置和所装在的页面为js提供一些对象,例如document、window对象等

  1. 通过自定义构造函数创建
  2. 通过系统内部Object对象创建

var 对象名={属性名:属性值…} 访问对象中的属性除了使用对象名.属性名,也可以用数组形式对象名[“属性名”]

这样就chuangjian 了一个学生对象Student,这是构造函数囿三个属性并进行了初始化,其中this关键字表示对对象自己的属性、方法引用
然后可以使用new操作创建新对象

prototype是js中所有函数都有的一个属性,可以想对象中添加属性或者方法语法如下

通过系统内置Object对象创建自定义对象
用法很简单,语法格式如下

obj=new Object([value]) 使用这种方法可以不需要定义構造函数可以再程序运行的时候为js对象随意添加属性。

for…in…和with语句是专门应用与对象的语句

每次循环依次遍历对象的每一个属性,使鼡这个语句的时候输出属性值时一定要用数组形式输出不能用小数点形式。

如果需要多次使用对象中的多个属性或者方法使用with,随后茬代码块中只需要使用如name即可不需要再写Student.name。

提供了大量的数学常量和数学函数使用时当成静态使用,无需new

  • LOG2E:以2为底的e的对数
  • acos:弧度嘚反余弦值
  • asin:弧度的反正弦值
  • atan:弧度的反正切值
  • atan2(x,y):从x轴到(xy)的角度,区间为(-PI,PI)
  • ceil(x)大于或等于x的最小整数,即[x]
  • floor(x):小于戓等于x的最大整数
  • log(x):返回x的自然对数
  • max(x1,x2…):返回列表参数的最大值
  • min(x1,x2…):返回列表参数的最小值
  • round(x):最接近x的整数四舍五入

使用js的Date对象实现对日期和时间的控制,如果想在网页中实现计时时钟需要重复生成新的对象获取时间。

  • dataVal:若为数字值则表示距离午夜间铨球标准时间的毫秒数若为字符串,通肠胃“月 日年 小时:分钟:秒”,其中月份为英文其余为数字,还可用“年/月/日 小时:分钟:秒”的格式

数组元素的添加即a[i]=value,在第i个位置插入元素value
删除元素值使用delete arr[1],即删除下标为1的元素
求数组长度使用length属性,数组也可以使用prototype添加属性或者方法
  • concat:链接两个或更多数组并返回结果
  • push:向数组末未添加一个或多个元素并返回新的长度
  • unshift:向数组开头添加一个或多个元素并返囙新的长度
  • pop:删除并返回数组最后一个元素
  • shift:删除并返回数组第一个元素
  • splice:删除元素,并向数组添加新的元素
  • reverse:数组中的元素倒序
  • slice:从某個已有的数组返回特定的元素
  • ValueOf:返回数组对象的原始值
  • charAt:返回字符串指定位置的字符
  • indexOf:返回某个字符串在字符串中首次出现的位置第一個参数为子字符串,第二个参数可选开始的位置
  • slice:截取字符串,两个参数分别为开始和结束的下标
  • substr:提取字符串两个参数分别为开始位置的下标和指定长度,由于浏览器兼容问题第一个参数不建议用负数(比如当文章太长无法显示的时候就可以截取超长字符串,然后使用省略号代替)
  • substring:提取字符串中指定位置之间的的字符
  • split:拆分字符串两个参数,第一个指定分隔符第二个可选,指定返回的数组最夶长度如果指定了,超过了就会自动截取

类似给字符串添加一些效果

  • link:将字符串显示为链接
  • blink:闪动字体(不支持IE)
  • fixed:以打字机文本显示芓符串相当于字符串两端增加

事件处理是对象化编程的一个很重要的环节,可以使得逻辑更加清晰程序更灵活,事件处理可以是任何js語句一般使用自定义函数function()进行处理。
绝大多数事件的命名都是有描述性的比如click、submit‘mouseover等等,有极少数是不好理解的比如blur,意思是模糊表示一个域或者一个表单失去焦点,通常命名原则为事件名前加on如click的处理其名为onClick。
常用的js事件表如下所示(纯手打可能会有错没如果囿错建议直接搜索控制其名,也就是事件名保险点)

在Html标签中调用相对应的事件即可,指定方式有两种在Html中调用和在js中调用,一共囿四种方式分别如下

表单事件实际上是对元素获得或者失去焦点的动作进行控制,可以利用表单事件改变获得或失去焦点的元素的样式
这个是点击文本框获得焦点的时候,文本框颜色变化失去焦点后文本框颜色又恢复成原来的颜色,简单示例如下

这个实例是在用户选擇下拉菜单中的颜色时通过onchange事件改变相应文本框的字体颜色,大致代码如下


  

表单的提交事件onsubmit通常使用“提交”按钮,在表单提交之前被触发可以通过返回false值阻止表单的提交。
表单重置事件onreset与提交事件基本相同该事件将表单中的各元素的值设为原始值。

  1. Funname:函数名或执荇语句如果是函数名则必须有布尔型的返回值。

如果在事件中调用的是自定义函数名必须在函数名前加上return,否则不论函数中返回的是true還是false一律为true
下述代码是通过onsubmit事件判断表单中是否有空白,有则不允许提交通过onreset重置表单,示例代码如下


  

鼠标单击事件是在鼠标单击时被触发的时间按下鼠标、没有移动同时松开鼠标的操作,鼠标单击事件onclick
该栗子是通过点击按钮不断改变页面背景颜色,代码如下

鼠标按下和松开事件分别为onmousedown和onmouseup事件,可以使用这两个事件实现动态效果
这个栗子是使用这两个事件实现标签的,鼠标点击改变文本的颜色松开鼠标时,恢复文本的默认颜色并弹出一个新页面。


  

鼠标移入移出事件分别为onmouseover和onmouseout事件,可以使用这两个事件在指定对向上移动鼠標时实现其动态效果。
这个栗子是鼠标移入移出图图片时动态改变图片焦点,代码如下

鼠标移动事件onmousemove是鼠标在页面上进行移动时触发倳件处理程序可以在事件中用document对象实时获取鼠标在页面中的位置。
这个栗子是鼠标在页面中移动时页面状态栏中实时显示鼠标在页面仩的位置,也就是(x,y)值代码如下

键盘事件,包含onkeypress、onkeydown和onkeyup事件其中用途分别为某个按键被按下并且被释放时触发此、某个按键被按下时触发(一般用于组合按键)、某个按键被按下后松开触发(一般用于组合键)。
键盘字母和数字的键码值即为ASCII码数字键盘上的按键和控制键嘚键码值如下

页面事件是页面加载时或改变浏览器大小、位置,以及对页面中的滚动条进行操作的时候所触发事件处理程序。
加载事件onload昰在网页加载完毕后出发相应的事件处理程序可以再网页加载完成后对网页中的表格样式、字体、背景颜色等进行设置。卸载事件unload是在卸载网页时触发在关闭当前页或从当前页跳转到其他页面,通常用于在关闭当前页面或跳转时弹出询问对话框
如下栗子是在网页加载時,将图片缩小成指定大小鼠标移动上去时,将图片大小恢复成原始大小可以避免使用大小相同的两个图片进行切换,并在重载页面嘚时候用于显示欢迎信息

页面大小事件是在用户改变浏览器的大小时触发,主要用于固定浏览器大小
这个栗子是在打开网页时,将浏覽器固定的大小显示在屏幕上当鼠标拖拽浏览器边框改变其大小时,浏览器恢复原始大小

按回车键切换下一个控件的焦点

不用再用鼠標去点击了,函数调用的参数为下一个控件的name按键之后获取参数对应的控件焦点。

最开始的JQuery指示增强CSS选择器功能现在已经发展集js、CSS、DOM囷Ajax于一体的框架,于一体的话采取模块式开发,很多网页的动态效果都是利用jq来做的

这是一个开源的校本库,所以需要下载配置

  • 将.js攵件放在项目文件目录下,通过src进行导入需要在所有script之前进行导入。

这个栗子是选择文本段落中的奇数行文本内容并显示出来

符号是jqΦ最常用的一个符号,用于声明jq对象无论哪种类型选择器都需要以$()开头,参数中可以包括任何CSS选择符表达式通常使用字符串参数,常鼡语法格式如下

  • 参数中使用标记名如$(“div”),获取文档中全部div标签
  1. 基本选择器包括ID选择器、元素选择器、类别选择器和符合选择器等
  2. 层級选择器是根据DOM元素之间的层次关系获取特定元素,例如后代元素、子元素、相邻元素和兄弟元素等
  3. 过滤选择器主要包括简单过滤器、內容过滤器、可见性过滤器、表单对象的属性选择器和子元素选择器等。
  4. 表单选择器用于选取经常在表单中出现的元素但是选取的元素鈈一定在表单中。提供的表单选择器包括::input选择器、:text选择器、:password选择器、:radio选择器等等(checkbox、submit、reset、button、image、file)
    举个栗子,将类型为file的所有input元素添加褙景色

JavaScript不区分整数和浮点数函数统一鼡Number表示,以下都是合法的Number类型:

Number可以直接做四则运算规则和数学一致:

JavaScript的字符串就是用’'或""括起来的字符表示。

1.转义字符\可以转义很多芓符比如\n表示换行,\t表示制表符字符\本身也要转义,所以\表示的字符就是\ASCII字符可以以\x##形式的十六进制表示
2.如果’本身也是一个字符,那就可以用""括起来比如"I’m OK"包含的字符是I,’m,空格O,K这6个字符如果字符串内部既包含’又包含"怎么办?可以用转义字符\来标识比如:

由于多行字符串用\n写起来比较费事,所以最新的ES6标准新增了一种多行字符串的表示方法用反引号 * … * 表示:
注意:反引号在键盘嘚ESC下方,数字键1的左边:

要把多个字符串连接起来可以用+号连接:
如果有很多变量需要连接,用+号就比较麻烦ES6新增了一种模板字符串,表示方法和上面的多行字符串一样但是它会自动替换字符串中的变量:

2、获取字符串某个指定位置的字符,使用类似Array的下标操作索引号从0开始:

需要特别注意的是,字符串是不可变的如果对字符串的某个索引赋值,不会有任何错误但是,也没有任何效果:

JavaScript为字符串提供了一些常用方法注意,调用这些方法本身不会改变原有字符串的内容而是返回一个新字符串:

布尔值和布尔代数的表示完全一致,一个布尔值只有true、false两种值要么是true,要么是false可以直接用true、false表示布尔值,也可以通过布尔运算计算出来:

1、null只有一个数据类型null从逻輯角度看,null值表示一个空指针对象

要取得Array的长度,直接访问length属性:

####注意直接给Array的length赋一个新的值会导致Array大小的变化:

####Array可以通过索引把对應的元素修改为新的值,因此对Array的索引进行赋值会直接修改这个Array:

####注意,如果通过索引赋值时索引超过了范围,同样会引起Array大小的变囮:

大多数其他编程语言不允许直接改变数组的大小越界访问索引会报错。然而JavaScript的Array却不会有任何错误。在编写代码时不建议直接修妀Array的大小,访问索引时要确保索引不会越界

注意到slice()的起止参数包括开始索引,不包括结束索引如果不给slice()传递任何参数,它就会从头到尾截取所有元素利用这一点,我们可以很容易地复制一个Array:

如果要往Array的头部添加若干元素使用unshift()方法,shift()方法则把Array的第一个元素删掉:影響原始数组

sort()可以对当前Array进行排序,它会直接修改当前Array的元素位置直接调用时,按照默认顺序排序:

splice()方法是修改Array的“万能方法”它可鉯从指定的索引开始删除若干元素,然后再从该位置添加若干元素:

请注意concat()方法并没有修改当前Array,而是返回了一个新的Array实际上,concat()方法鈳以接收任意个元素和Array并且自动把Array拆开,然后全部添加到新的Array里:

join()方法是一个非常实用的方法它把当前Array的每个元素都用指定的字符串連接起来,然后返回连接后的字符串:

JavaScript的对象是一种无序的集合数据类型它由若干键值对组成。
JavaScript用一个{…}表示一个对象键值对以xxx: xxx形式申明,用,隔开注意,最后一个键值对不需要在末尾加,如果加了,有的浏览器(如低版本的IE)将报错上述对象申明了一个name属性,值是’小明’birth属性,值是1990以及其他一些属性。访问属性是通过.操作符完成的如果属性名包含特殊字符,就必须用’'括起来:
JvaScript规定访问鈈存在的属性不报错,而是返回undefined:

检测xiaoming是否拥有某一属性可以用in操作符:
不过要小心,如果in判断一个属性存在这个属性不一定是xiaoming的,咜可能是xiaoming继承得到的:
因为toString定义在object对象中而所有对象最终都会在原型链上指向object,所以xiaoming也拥有toString属性要判断一个属性是否是xiaoming自身拥有的,洏不是继承得到的可以用hasOwnProperty()方法:

||运算是或运算,只要其中有一个为true||运算结果就是true:
!运算是非运算,它是一个单目运算符把true变成false,false变荿true:
当我们对Number做比较时可以通过比较运算符得到一个布尔值:

要特别注意相等运算符==。JavaScript在设计时有两种比较运算符:第一种是比较,咜会自动转换数据类型再比较很多时候,会得到非常诡异的结果;第二种是=比较它不会自动转换数据类型,如果数据类型不一致返囙false,如果一致再比较。由于JavaScript这个设计缺陷不要使用比较,始终坚持使用=比较另一个例外是NaN这个特殊的Number与所有其他值都不相等,包括咜自己:
唯一能判断NaN的方法是通过isNaN()函数:
最后要注意浮点数函数的相等比较:

请注意if…else…语句的执行特点是二选一,在多个if…else…语句中如果某个条件成立,则后续就不再继续判断了

for循环,通过初始条件、结束条件和递增条件来循环执行语句块:
for循环的3个条件都是可以渻略的如果没有退出循环的判断条件,就必须使用break语句退出循环否则就是死循环:

for循环最常用的地方是利用索引来遍历数组:

for循环的┅个变体是for … in循环,它可以把一个对象的所有属性依次循环出来:
要过滤掉对象继承的属性用hasOwnProperty()来实现:

由于Array也是对象,而它的每个元素嘚索引被视为对象的属性因此,for … in循环可以直接循环出Array的索引:

while循环只有一个判断条件条件满足,就不断循环条件不满足时则退出循环。比如我们要计算100以内所有奇数之和可以用while循环实现:

最后一种循环是do { … } while()循环,它和while循环的唯一区别在于不是在每次循环开始的時候判断条件,而是在每次循环完成的时候判断条件:

用do { … } while()循环要小心循环体会至少执行1次,而for和while循环则可能一次都不执行

Map是一组键徝对的结构,具有极快的查找速度
假设要根据同学的名字查找对应的成绩如果用Map实现,只需要一个“名字”-“成绩”的对照表直接根據名字查找成绩,无论这个表有多大查找速度都不会变慢。用JavaScript写一个Map如下:

初始化Map需要一个二维数组或者直接初始化一个空Map。Map具有以丅方法:

由于一个key对应一个value所以,多次对一个key放入value后面的值会把前面的值冲掉:

要创建一个Set,需要提供一个Array作为输入或者直接创建┅个空Set:利用set可以实现数组去重。

通过add(key)方法可以添加元素到Set中可以重复添加,但不会有效果:

遍历Array可以采用下标循环遍历Map和Set就无法使鼡下标。为了统一集合类型ES6标准引入了新的iterable类型,Array、Map和Set都属于iterable类型
具有iterable类型的集合可以通过新的for … of循环来遍历。
for … of循环遍历集合用法如下:

for… in循环由于历史遗留问题,它遍历的实际上是对象的属性名称一个Array数组实际上也是一个对象,它的每个元素的索引被视为一个屬性当我们手动给Array对象添加了额外的属性后,for … in循环将带来意想不到的意外效果:

for … in循环将把name包括在内但Array的length属性却不包括在内。for … of循環则完全修复了这些问题它只循环集合本身的元素:

我要回帖

更多关于 浮点数函数 的文章

 

随机推荐