关于JavaScipt对象的基本知识
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)。如果没有指定<终>或许指定得逾越字符串长度,则子字符串从<始>位置不停取到原字符串尾。如果所指定的位置不克不及返回字符串,则返回空字符串。
span style="color: #800080;"> substr()用法:<字符串对象>.substr(<始>[,<长>]);返回原字符串的子字符串,该字符串是原字符串从<始>位置起头,长度为<长>的一段。如果没有指定<长>或许指定得逾越字符串长度,则子字符串从<始>位置不停取到原字符串尾。如果所指定的位置不克不及返回字符串,则返回空字符串。
toLowerCase()用法:<字符串对象>.toLowerCase();返回把原字符串整个大写字母都变为小写的字符串。
toUpperCase()用法:<字符串对象>.toUpperCase();返回把原字符串整个小写字母都变为大写的字符串。
Array数组对象。
数组对象是一个对象的集合,里边的对象可以是区别典范的。数组的每一个成员对象都有一个“下标”,用来暗示它正在数组中的位置(既然是“位置”,就也是从零起头的啦)。 数组的概念方式:
var<数组名>=newArray();
多么就概念了一个空数组。以后要增添数组元素,就用:
<数组名>[<下标>]=...;
注意此处的方括号不是“可以省略”的意义,数组的下标暗示方式便是用方括号括起来。 如果想正在概念数组的时辰间接初始化数据,请用:
var<数组名>=newArray(<元素1>,<元素2>,<元素3>...);
例如,varmyArray=newArray(1,4.5,'Hi');概念了一个数组myArray,里边的元素是:myArray[0]==1;myArray[1]==4.5;myArray[2]=='Hi'。 可是,如果元素列表中惟唯一个元素,而这个元素又是一个正整数的话,这将概念一个包含<正整数>个空元素的数组。 注意:JavaScript惟唯一维数组!万万不要用“Array(3,4)”这类愚蠢的方式来概念4x5的二维数组,大约用“myArray[2,3]”这类方式来返回“二维数组”中的元素。肆意“myArray[...,3]”这类形式的调用实践上只返回了“myArray[3]”。要运用多维数组,请用这类捏造法:
varmyArray=newArray(newArray(),newArray(),newArray(),...);
实践上这是一个一维数组,里边的每一个元素又是一个数组。调用这个“二维数组”的元素时:myArray[2][3]=...;
属性 length用法:<数组对象>.length;返回:数组的长度,即数组里有几多个元素。它即是数组里起初一个元素的下标加一。以是,想增添一个元素,只必要:myArray[myArray.length]=...。
方式 join()用法:<数组对象>.join(<离开符>);返回一个字符串,该字符串把数组中的各个元素串起来,用<离开符>置于元素与元素之间。这个方式不影响数组原先的内容。
reverse()用法:<数组对象>.reverse();使数组中的元素次序反过来。如果关于数组[1,2,3]运用这个方式,它将使数组变为:[3,2,1]。
slice()用法:<数组对象>.slice(<始>[,<终>]);返回一个数组,该数组是原数组的子集,始于<始>,究竟<终>。如果不给出<终>,则子集不停取到原数组的扫尾。
sort()用法:<数组对象>.sort([<方式函数>]);使数组中的元素依据一定的次序分列。如果不指定<方式函数>,则按字母次序分列。正在这类环境下,80是比9排得前的。如果指定<方式函数>,则按<方式函数>所指定的排序方式排序。<方式函数>有点难报告,此处只将一些适用的<方式函数>先容给巨匠。
按升序分列数字:
functionsortMethod(a,b){ returna-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”。