JavaScript 参考教程(二)——转载

对象化编程

  JavaScript 是使用“对象化编程”的,或者叫“面向对象编程”的。所谓“对象化编程”,意思是把 JavaScript 能涉及的范围划分成大大小小的对象,对象下面还继续划分对象直至非常详细为止,所有的编程都以对象为出发点,基于对象。小到一个变量,大到网页文档、窗口甚至屏幕,都是对象。这一章将“面向对象”讲述 JavaScript 的运行情况。

对象的基本知识

 对象是可以从 JavaScript“势力范围”中划分出来的一小块,可以是一段文字、一幅图片、一个表单(Form)等等。每个对象有它自己的属性方法事件。对象的属性是反映该对象某些特定的性质的,例如:字符串的长度、图像的长宽、文字框(Textbox)里的文字等等;对象的方法能对该对象做一些事情,例如,表单的“提交”(Submit),窗口的“滚动”(Scrolling)等等;而对象的事件就能响应发生在对象上的事情,例如提交表单产生表单的“提交事件”,点击连接产生的“点击事件”。不是所有的对象都有以上三个性质,有些没有事件,有些只有属性。引用对象的任一“性质”用“<对象名>.<性质名>”这种方法。

基本对象

现在我们要复习以上学过的内容了——把一些数据类型用对象的角度重新学习一下。

Number “数字”对象。这个对象用得很少,作者就一次也没有见过。不过属于“Number”的对象,也就是“变量”就多了。

属性

MAX_VALUE 用法:Number.MAX_VALUE;返回“最大值”。
MIN_VALUE
用法:Number.MIN_VALUE;返回“最小值”。
NaN
用法:Number.NaN 或 NaN;返回“NaN”。“NaN”(不是数值)在很早就介绍过了。
NEGATIVE_INFINITY
用法:Number.NEGATIVE_INFINITY;返回:负无穷大,比“最小值”还小的值。
POSITIVE_INFINITY
用法:Number.POSITIVE_INFINITY;返回:正无穷大,比“最大值”还大的值。

方法

toString() 用法:<数值变量>.toString();返回:字符串形式的数值。如:若 a == 123;则 a.toString() == '123'。

String 字符串对象。声明一个字符串对象最简单、快捷、有效、常用的方法就是直接赋值。

属性

length 用法:<字符串对象>.length;返回该字符串的长度。

方法

charAt() 用法:<字符串对象>.charAt(<位置>);返回该字符串位于第<位置>位的单个字符。注意:字符串中的一个字符是第 0 位的,第二个才是第 1 位的,最后一个字符是第 length - 1 位的。
charCodeAt()
用法:<字符串对象>.charCodeAt(<位置>);返回该字符串位于第<位置>位的单个字符的 ASCII 码。
fromCharCode()
用法:String.fromCharCode(a, b, c...);返回一个字符串,该字符串每个字符的 ASCII 码由 a, b, c... 等来确定。
indexOf()
用法:<字符串对象>.indexOf(<另一个字符串对象>[, <起始位置>]);该方法从<字符串对象>中查找<另一个字符串对象>(如果给出<起始位置>就忽略之前的位置),如果找到了,就返回它的位置,没有找到就返回“-1”。所有的“位置”都是从零开始的。
lastIndexOf()
用法:<字符串对象>.lastIndexOf(<另一个字符串对象>[, <起始位置>]);跟 indexOf() 相似,不过是从后边开始找。
split()
用法:<字符串对象>.split(<分隔符字符>);返回一个数组,该数组是从<字符串对象>中分离开来的,<分隔符字符>决定了分离的地方,它本身不会包含在所返回的数组中。例如:'1&2&345&678'.split('&')返回数组:1,2,345,678。关于数组,我们等一下就讨论。
substring()
用法:<字符串对象>.substring(<始>[, <终>]);返回原字符串的子字符串,该字符串是原字符串从<始>位置到<终>位置的前一位置的一段。<终> - <始> = 返回字符串的长度(length)。如果没有指定<终>或指定得超过字符串长度,则子字符串从<始>位置一直取到原字符串尾。如果所指定的位置不能返回字符串,则返回空字符串。
substr()
用法:<字符串对象>.substr(<始>[, <长>]);返回原字符串的子字符串,该字符串是原字符串从<始>位置开始,长度为<长>的一段。如果没有指定<长>或指定得超过字符串长度,则子字符串从<始>位置一直取到原字符串尾。如果所指定的位置不能返回字符串,则返回空字符串。
toLowerCase()
用法:<字符串对象>.toLowerCase();返回把原字符串所有大写字母都变成小写的字符串。
toUpperCase() 用法:<字符串对象>.toUpperCase();返回把原字符串所有小写字母都变成大写的字符串。

Array 数组对象。数组对象是一个对象的集合,里边的对象可以是不同类型的。数组的每一个成员对象都有一个“下标”,用来表示它在数组中的位置(既然是“位置”,就也是从零开始的啦)。

数组的定义方法:

var <数组名> = new Array();

这样就定义了一个空数组。以后要添加数组元素,就用:

<数组名>[<下标>] = ...;

注意这里的方括号不是“可以省略”的意思,数组的下标表示方法就是用方括号括起来。

如果想在定义数组的时候直接初始化数据,请用:

var <数组名> = new Array(<元素1>, <元素2>, <元素3>...);

例如,var myArray = new Array(1, 4.5, 'Hi'); 定义了一个数组 myArray,里边的元素是:myArray[0] == 1; myArray[1] == 4.5; myArray[2] == 'Hi'。

但是,如果元素列表中只有一个元素,而这个元素又是一个正整数的话,这将定义一个包含<正整数>个空元素的数组。

注意:JavaScript只有一维数组!千万不要用“Array(3,4)”这种愚蠢的方法来定义 4 x 5 的二维数组,或者用“myArray[2,3]”这种方法来返回“二维数组”中的元素。任意“myArray[...,3]”这种形式的调用其实只返回了“myArray[3]”。要使用多维数组,请用这种虚拟法:

var myArray = new Array(new Array(), new Array(), new Array(), ...);

其实这是一个一维数组,里边的每一个元素又是一个数组。调用这个“二维数组”的元素时:myArray[2][3] = ...;

属性

length 用法:<数组对象>.length;返回:数组的长度,即数组里有多少个元素。它等于数组里最后一个元素的下标加一。所以,想添加一个元素,只需要:myArray[myArray.length] = ...。

方法

join() 用法:<数组对象>.join(<分隔符>);返回一个字符串,该字符串把数组中的各个元素串起来,用<分隔符>置于元素与元素之间。这个方法不影响数组原本的内容。
reverse()
用法:<数组对象>.reverse();使数组中的元素顺序反过来。如果对数组[1, 2, 3]使用这个方法,它将使数组变成:[3, 2, 1]。
slice()
用法:<数组对象>.slice(<始>[, <终>]);返回一个数组,该数组是原数组的子集,始于<始>,终于<终>。如果不给出<终>,则子集一直取到原数组的结尾。
sort()
用法:<数组对象>.sort([<方法函数>]);使数组中的元素按照一定的顺序排列。如果不指定<方法函数>,则按字母顺序排列。在这种情况下,80 是比 9 排得前的。如果指定<方法函数>,则按<方法函数>所指定的排序方法排序。<方法函数>比较难讲述,这里只将一些有用的<方法函数>介绍给大家。

按升序排列数字:

function sortMethod(a, b) {
    return a - b;
}

myArray.sort(sortMethod);

按降序排列数字:把上面的“a - b”该成“b - a”。

有关函数,请看下面。

Math “数学”对象,提供对数据的数学计算。下面所提到的属性和方法,不再详细说明“用法”,大家在使用的时候记住用“Math.<名>”这种格式。

属性

E 返回常数 e (2.718281828...)。
LN2
返回 2 的自然对数 (ln 2)。
LN10
返回 10 的自然对数 (ln 10)。
LOG2E
返回以 2 为低的 e 的对数 (log2e)。
LOG10E
返回以 10 为低的 e 的对数 (log10e)。
PI
返回π(3.1415926535...)。
SQRT1_2
返回 1/2 的平方根。
SQRT2
返回 2 的平方根。

方法

abs(x) 返回 x 的绝对值。
acos(x)
返回 x 的反余弦值(余弦值等于 x 的角度),用弧度表示。
asin(x)
返回 x 的反正弦值。
atan(x)
返回 x 的反正切值。
atan2(x, y)
返回复平面内点(x, y)对应的复数的幅角,用弧度表示,其值在 -π 到 π 之间。
ceil(x)
返回大于等于 x 的最小整数。
cos(x)
返回 x 的余弦。
exp(x)
返回 e 的 x 次幂 (ex)。
floor(x)
返回小于等于 x 的最大整数。
log(x)
返回 x 的自然对数 (ln x)。
max(a, b)
返回 a, b 中较大的数。
min(a, b)
返回 a, b 中较小的数。
pow(n, m)
返回 n 的 m 次幂 (nm)。
random()
返回大于 0 小于 1 的一个随机数。
round(x)
返回 x 四舍五入后的值。
sin(x)
返回 x 的正弦。
sqrt(x)
返回 x 的平方根。
tan(x)
返回 x 的正切。

Date 日期对象。这个对象可以储存任意一个日期,从 0001 年到 9999 年,并且可以精确到毫秒数(1/1000 秒)。在内部,日期对象是一个整数,它是从 1970 年 1 月 1 日零时正开始计算到日期对象所指的日期的毫秒数。如果所指日期比 1970 年早,则它是一个负数。所有日期时间,如果不指定时区,都采用“UTC”(世界时)时区,它与“GMT”(格林威治时间)在数值上是一样的。

定义一个日期对象:

var d = new Date;

这个方法使 d 成为日期对象,并且已有初始值:当前时间。如果要自定初始值,可以用:

var d = new Date(99, 10, 1);     //99 年 10 月 1 日
var d = new Date('Oct 1, 1999'); //99 年 10 月 1 日

等等方法。最好的方法就是用下面介绍的“方法”来严格的定义时间。

方法

以下有很多“g/set[UTC]XXX”这样的方法,它表示既有“getXXX”方法,又有“setXXX”方法。“get”是获得某个数值,而“set”是设定某个数值。如果带有“UTC”字母,则表示获得/设定的数值是基于 UTC 时间的,没有则表示基于本地时间或浏览期默认时间的。

如无说明,方法的使用格式为:“<对象>.<方法>”,下同。

g/set[UTC]FullYear() 返回/设置年份,用四位数表示。如果使用“x.set[UTC]FullYear(99)”,则年份被设定为 0099 年。
g/set[UTC]Year()
返回/设置年份,用两位数表示。设定的时候浏览器自动加上“19”开头,故使用“x.set[UTC]Year(00)”把年份设定为 1900 年。
g/set[UTC]Month()
返回/设置月份。
g/set[UTC]Date()
返回/设置日期。
g/set[UTC]Day()
返回/设置星期,0 表示星期天。
g/set[UTC]Hours()
返回/设置小时数,24小时制。
g/set[UTC]Minutes()
返回/设置分钟数。
g/set[UTC]Seconds()
返回/设置秒钟数。
g/set[UTC]Milliseconds()
返回/设置毫秒数。
g/setTime()
返回/设置时间,该时间就是日期对象的内部处理方法:从 1970 年 1 月 1 日零时正开始计算到日期对象所指的日期的毫秒数。如果要使某日期对象所指的时间推迟 1 小时,就用:“x.setTime(x.getTime() + 60 * 60 * 1000);”(一小时 60 分,一分 60 秒,一秒 1000 毫秒)。
getTimezoneOffset()
返回日期对象采用的时区与格林威治时间所差的分钟数。在格林威治东方的市区,该值为负,例如:中国时区(GMT+0800)返回“-480”。
toString()
返回一个字符串,描述日期对象所指的日期。这个字符串的格式类似于:“Fri Jul 21 15:43:46 UTC+0800 2000”。
toLocaleString()
返回一个字符串,描述日期对象所指的日期,用本地时间表示格式。如:“2000-07-21 15:43:46”。
toGMTString()
返回一个字符串,描述日期对象所指的日期,用 GMT 格式。
toUTCString()
返回一个字符串,描述日期对象所指的日期,用 UTC 格式。
parse()
用法:Date.parse(<日期对象>);返回该日期对象的内部表达方式。

全局对象

全局对象从不现形,它可以说是虚拟出来的,目的在于把全局函数“对象化”。在 Microsoft JScript 语言参考中,它叫做“Global 对象”,但是引用它的方法和属性从来不用“Global.xxx”(况且这样做会出错),而直接用“xxx”。

属性

NaN 一早就说过了。

方法

eval() 把括号内的字符串当作标准语句或表达式来运行。
isFinite()
如果括号内的数字是“有限”的(介于 Number.MIN_VALUE 和 Number.MAX_VALUE 之间)就返回 true;否则返回 false。
isNaN()
如果括号内的值是“NaN”则返回 true 否则返回 false。
parseInt()
返回把括号内的内容转换成整数之后的值。如果括号内是字符串,则字符串开头的数字部分被转换成整数,如果以字母开头,则返回“NaN”。
parseFloat()
返回把括号内的字符串转换成浮点数之后的值,字符串开头的数字部分被转换成浮点数,如果以字母开头,则返回“NaN”。
toString() 用法:<对象>.toString();把对象转换成字符串。如果在括号中指定一个数值,则转换过程中所有数值转换成特定进制。
escape() 返回括号中的字符串经过编码后的新字符串。该编码应用于 URL,也就是把空格写成“%20”这种格式。“+”不被编码,如果要“+”也被编码,请用:escape('...', 1)。
unescape() 是 escape() 的反过程。解编括号中字符串成为一般字符串。

函数

函数的定义

所谓“函数”,是有返回值的对象或对象的方法。

函数的种类

常见的函数有:构造函数,如 Array(),能构造一个数组;全局函数,即全局对象里的方法;自定义函数;等等。

自定义函数

定义函数用以下语句:

function 函数名([参数集]) {
    ...
    [return[ <值>];]
    ...
}

其中,用在 function 之后和函数结尾的大括号是不能省去的,就算整个函数只有一句。

函数名与变量名有一样的起名规定,也就是只包含字母数字下划线、字母排头、不能与保留字重复等。

参数集可有可无,但括号就一定要有。

参数 是函数外部向函数内部传递信息的桥梁,例如,想叫一个函数返回 3 的立方,你就要让函数知道“3”这个数值,这时候就要有一个变量来接收数值,这种变量叫做参数。

参数集是一个或多个用逗号分隔开来的参数的集合,如:a, b, c。

函数的内部有一至多行语句,这些语句并不会立即执行,而只当有其它程序调用它时才执行。这些语句中可能包含“return”语句。在执行一个函数的时候,碰到 return 语句,函数立刻停止执行,并返回到调用它的程序中。如果“return”后带有<值>,则退出函数的同时返回该值。

在函数的内部,参数可以直接当作变量来使用,并可以用 var 语句来新建一些变量,但是这些变量都不能被函数外部的过程调用。要使函数内部的信息能被外部调用,要么使用“return”返回值,要么使用全局变量

全局变量 在 Script 的“根部”(非函数内部)的“var”语句所定义的变量就是全局变量,它能在整个过程的任意地方被调用、更改。

function addAll(a, b, c) {
    return a + b + c;
}

var total = addAll(3, 4, 5);

这个例子建立了一个叫“addAll”的函数,它有 3 个参数:a, b, c,作用是返回三个数相加的结果。在函数外部,利用“var total = addAll(3, 4, 5);”接收函数的返回值。

更多的时候,函数是没有返回值的,这种函数在一些比较强调严格的语言中是叫做“过程”的,例如 Basic 类语言的“Sub”、Pascal 语言的“procedure”。

属性

arguments 一个数组,反映外部程序调用函数时指定的参数。用法:直接在函数内部调用“arguments”。

转载声明:原文章链接:http://www.iselong.com/online/ebooks/javascript/

转载于:https://www.cnblogs.com/ZhangHuaning/archive/2010/05/28/1746510.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/381024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

centos7 docker删除端口映射_容器Docker详解

概述基本概念Docker是一个开源的应用容器引擎&#xff0c;基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的Linux机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&a…

深入解析结构化异常处理(SEH) - by Matt Pietrek

尽管以前写过一篇SEH相关的文章《关于SEH的简单总结》&#xff0c; 但那真的只是皮毛&#xff0c;一直对Windows异常处理的原理似懂非懂&#xff0c; 看了下面的文章 &#xff0c;一切都豁然开朗. 1997年文章&#xff0c;Windows技术的根一直没变&#xff1a;http://www.micr…

IE Mobie6清除浮动

看来已经有很多中window的毒了&#xff0c;平时操作系统是window&#xff0c;现在还好多人用window mobie&#xff0c;看来已经习惯了window的使用方式。做前端开发&#xff0c;有个IE 6已经够受的了&#xff0c;没想到半路杀出个IE Mobie。期待IE6被埋葬的一天。 做几个页面&a…

@requestbody 接受int参数_C++之指针作为函数参数

C 允许您传递指针给函数&#xff0c;只需要简单地声明函数参数为指针类型即可。下面的实例中&#xff0c;我们传递一个无符号的 long 型指针给函数&#xff0c;并在函数内改变这个值&#xff1a;#include <iostream> #include <ctime>using namespace std; void ge…

hash函数查找和ASL计算

Hash表的“查找成功的ASL”和“查找不成功的ASL” ASL指的是 平均查找时间 关键字序列&#xff1a;&#xff08;7、8、30、11、18、9、14&#xff09; 散列函数&#xff1a; H(Key) (key x 3) MOD 7 装载因子&#xff1a; 0.7 处理冲突&#xff1a;线性探测再散列法 查…

Jquery CheckBox全选方法

方法如下&#xff1a; function CheckAll(val) {$("input[namechkJob]").each(function() {this.checked val;});$("#chkAll").attr("checked", val);//设定全选按钮状态}val 该参数传递的是全选按钮的选择状态 namechkJob 这个为列表中的check…

c++怎么将文件中的数据读出并赋值给字符串_web前端开发过程中如何写JavaScript程序?...

script标签使用< script >< /script >src : 外联script 标签(立即调用,不能在该标签内写代码)< script >// 在标签内书写内容< /script >< script srcjavascript.js >// 这里面不能写任何内容< /script >一切准备就绪&#xff0c;让我们从…

简美电子相册

下载地址&#xff1a;微客互联 转载于:https://www.cnblogs.com/Witkey/archive/2010/06/10/1755755.html

强制进程结束(内核函数)

windows给我们结束进程的函数是PsTerminateSystemThread function&#xff0c;通过反汇编我们可以看到PsTerminateSystemThread 调用了未导出的函数PspTerminateThreadByPointer &#xff0c;然后这个函数又调用了APC和PspExitThread函数对进程实现强制结束。

3说明书_知行翻译:做化妆品说明书翻译时,这3点需要谨记

经过20多年的迅猛发展&#xff0c;被称为“美丽经济”的中国化妆品产业已经取得非常大的成就&#xff0c;在这20多年里&#xff0c;中国化妆品产业从小到大&#xff0c;从弱到强&#xff0c;从简单粗放到科技领先&#xff0c;已经逐步成为全世界最大的新兴市场&#xff0c;很多…

拉拢中小网站 淘宝百度暗战升级...

拉拢中小网站 淘宝百度暗战升级... 重庆晚报 讯 近日&#xff0c;大量淘宝联盟站长反映其网站在百度搜索结果大幅缩水&#xff0c;疑遭集体封杀。百度的理由是“清扫垃圾页面”。迟迟未表态的淘宝近日对前者进行了公开回应。至此&#xff0c;淘宝跟百度之间为拉拢中小网站的暗战…

转——idapython import site failed

打开IDA出现这个错误提示&#xff0c;问题根源是IDA找不到python&#xff0c;安装2.7版本的python并设置%PYTHONHOME%变量为python安装目录就可以了 如果已经安装了python可以在命令行下用echo %PYTHONHOME%看看配置有没有问题

matlab中将数据保存为txt文件_matlab中将数据输出保存为txt格式文件的方法 (1)

总结网上各大论坛&#xff0c;主要有三种方法。第一种方法&#xff1a;save(最简单基本的)具体的命令是&#xff1a;用save *.txt -ascii xx为变量*.txt为文件名,该文件存储于当前工作目录下&#xff0c;再打开就可以打开后,数据有可能是以指数形式保存的.例子&#xff1a;a [1…

有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数

有1、2、3、4个数字&#xff0c;能组成多少个互不相同且无重复数字的三位数&#xff1f; 步骤&#xff1a;先定一个函数&#xff0c;把数据储存在一个列表&#xff0c;然后传入函数中就行了 代码 def threeDN(a):组成多少个互不相同且无重复数字的三位数num0for i1 in a:for…

.Net Remoting(基本操作) - Part.2 (转)

Remoting 构架 1.客户端(客户应用程序) 客户端的处理包含三个基本的组成部分&#xff0c;代理(Proxy)、格式器(Formatter) 和 通道(Channel)。 2.服务端(宿主应用程序) 服务端主要由 通道(Channel)、格式器(Formatter)、Stack Builder组成。 在服务端&#xff0c;宿主程序保持着…

转载——CVE-2019-0807

译文声明 本文是翻译文章&#xff0c;文章原作者mcafee&#xff0c;文章来源&#xff1a;securingtomorrow.mcafee.com 原文地址&#xff1a;https://securingtomorrow.mcafee.com/other-blogs/mcafee-labs/rdp-stands-for-really-do-patch-understanding-the-wormable-rdp-v…

angular移除事件绑定事件绑定_Vue.js子组件利用事件向父组件传输数据,以及sync修饰符和双向绑定...

在Vue.js的组件中&#xff0c;prop是“单向绑定”的&#xff0c;数据只能从父组件传输到子组件。Vue文档中的说了这样做的原因&#xff1a;所有的 prop 都使得其父子 prop 之间形成了一个单向下行绑定&#xff1a;父级 prop 的更新会向下流动到子组件中&#xff0c;但是反过来则…

1!+2!+3!+…+10!的和

1!2!3!…10!的和 代码 public class Test {public static void main(String[] args) {/*输出1&#xff01;2&#xff01;***10&#xff01;的和*/int sum0;int n1;for (int i 1; i <10 ; i) {for (int j1;j<i;j){nn*j;}sumn;n1;}System.out.println("sum"su…

JS 对GridView的一些操作

//全选、全不选function CheckBoxChoice(checkAll){ //获取所有input对象的列表 var itemsdocument.getElementsByTagName("input"); for(var i0;i<items.length;i) { if(items[i].type "checkbox") { items[i].…

头文件一般放什么

一般的c和c工程里面头文件应该放那些内容&#xff1a; 1宏定义&#xff08;#define) 2结构体、联合体和枚举类型的定义(这个地方对结构体有时候称为定义,有时候称为声明,个人认为定义更合适一点). 3类的声明和类的定义&#xff08;不是类的对象的定义&#xff09; 4函数的声…