首页系统JSESCAPE(Javascript escape() 函数和unescape() 函数)

JSESCAPE(Javascript escape() 函数和unescape() 函数)

编程之家2024-02-1787次浏览

一、不懂急,请问javascript对象的问题

上楼回答的很不错了你看看这一个纯JavaScript教程网站吧

JSESCAPE(Javascript escape() 函数和unescape() 函数)

我就是靠他学的

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

对象的基本知识

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

基本对象

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

JSESCAPE(Javascript escape() 函数和unescape() 函数)

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

属性

MAX_VALUE用法:Number.MAX_VALUE;返回“最大值”。

MIN_VALUE用法:Number.MIN_VALUE;返回“最小值”。

NaN用法:Number.NaN或 NaN;返回“NaN”。“NaN”(不是数值)在很早就介绍过了。

NEGATIVE_INFINITY用法:Number.NEGATIVE_INFINITY;返回:负无穷大,比“最小值”还小的值。

JSESCAPE(Javascript escape() 函数和unescape() 函数)

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”。

二、JavaScript中escape和unescape函数用法

escape()函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串。语法escape(string)参数描述string必需。要被转义或编码的字符串。返回值已编码的 string的副本。其中某些字符被替换成了十六进制的转义序列。说明该方法不会对 ASCII字母和数字进行编码,也不会对下面这些 ASCII标点符号进行编码:- _.!~*'()。其他所有的字符都会被转义序列替换。

提示和注释提示:可以使用 unescape()对 escape()编码的字符串进行解码。用法与escape()一样。

举例:

<script type="text/javascript">

document.write(escape("Visit W3School!")+"<br/>")

document.write(escape("?!=()#%&"))

</script>

输出:

Visit%20W3School%21

%3F%21%3D%28%29%23%25%26

注释:ECMAScript v3反对使用该方法,应用使用 decodeURI()和 decodeURIComponent()替代它。

三、jscript中的函数和方法与脚本运行时的函数和方法有什么区别

?

<script language="vbscript">

dim va

va= Array(1,2,3)

</script>

<script language="javascript">

var ja=(new VBArray(va)).toArray();

for(var i=0; i< ja.length; i++)

alert(ja[i]);

</script>

?

一、VBScript和JScript的内置函数

在VBScript和JScript中,有大量的内置函数功能是相同或类似的。然而,在一种脚本语言中内置的函数并非总是在另外一种脚本语言中也有对应的函数。例如,VBScript提供了许多用于操作字符串和格式化数据的函数,这些函数在JScript中并不存在。这些函数包括StrReverse()、Filter()以及FormatCurrency()等。在另一方面,JScript所提供的用于管理数组、字符串编码等的函数在VBScript中也没有定义,如join()、reverse()、pow()、位操作、escape()和unescape()等。

那么,如果在JScript程序中需要一个VBscript函数该怎么办呢?

二、异种脚本的互相调用

如果需要在JScript脚本中调用一个VBScript中内置的函数,则应该写一个VBScript用户定义函数(在这里调用VBScript内置函数),然后在JScript脚本中象调用公用JScript函数一样调用这个用户定义函数。

例如,如果要调用的VBSCript内置函数是FormatCurrency(),则可以声明如下自定义函数:

< SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER">

Function FormatValue(Value)

FormatValue= FormatCurrency(Value)

End Function

</SCRIPT>

接下来在JScript代码中就可以象普通JScript函数一样调用FormatValue()了。用类似的方法也可以实现VBScript代码调用JScript函数。

应用同样的规则,我们可以在任何脚本内调用任何用户定义函数。不过,从JScript脚本内调用一个不带参数的VBScript过程(Sub)时应略加注意,此时在JScript中应该象调用一个不带参数的JScript函数一样调用它,如用foo()调用VBScript Sub foo过程。

三、数据共享

在某些情形下混合运用VBScript和JScript函数是非常有用的,但在不同语言脚本之间共享数据也可能很有用。实现这种共享的方法很简单:不管使用的是什么语言,只要是在页面级声明的变量就可以任意引用。

对象的使用方法也相似,可以任意选用合适的语言读取、修改属性或调用对象的方法。当然给定对象的属性和方法是由创建该对象实例的语言所定义的。正如上例VBScript的过程调用,当从JScript中调用一个不带参数的VBScript对象的方法时,其调用方法也遵从JScript的调用规则,反之亦然。

四、数组管理

数组共享问题稍微复杂一点。虽然数组也象其它变量一样可以在不同语言脚本之间共享,但必须注意兼容方面的问题。

VBScript数组在JScript下可以用VBScript的符号引用,即用myArray(2)引用数组元素而不是JScript的数组元素引用符号myArray[2]。此外,还可以使用一个特殊的JScript对象——VBArray对象将VBScript数组转换为JScript数组。下面的代码从VBScript数组myVBArray创建JScript数组myJSArray:

var Temp= new VBArray(myVBArray)

var myJSArray

myJSArray= Temp.toArray()

上述代码首先创建一个临时的VBArray对象,然后使用它的toArray()方法将自己转换为JScript数组。此后就可以象普通JScript数组一样使用myJSArray,如myJSArray[1]。但应当注意的是,toArray()方法将把一个多维的VBArray转换为一维的JScript数组。

从VBScript中引用JScript数组更为复杂。虽然在VBScript中我们可以直接访问JScript数组相关的方法和属性,但没有直接访问JScript数组的单个元素的方法。也就是说,我们可以在VBScript脚本中读取JScript数组的长度属性,如下所示:

x= myJSArray.length

但无法直接读取该数组的单个元素,下面的VBScript代码是不正确的:

x= myJSArray(3)

解决该问题的一个可行的方法是执行一个转换过程,如下面的代码所示,此处假定VBScript是缺省的脚本语言:

<%

Dim Temp

Dim myVBArray

Temp= myJSArray.join(",")

myVBArray= Split(Temp,",")

%>

此处的JScript join()方法将数组myJSArray元素转换到一个以逗号为分割符的字符串,VBScript Split()函数将字符串转换为VBScript数组。注意这里我们是在VBScript环境下调用JScript的join方法。依照此例,我们可以通过自定义VBScript函数来模拟JScript的VBArray对象的toArray()方法以实现JScript数组到VBScript数组的转换。

五、小结

在同一个ASP工程内灵活选用不同脚本语言具有许多优点,这些脚本之间的交互能力更为开发者集成不同语言所提供的内置函数和其它功能带来了更多的机会,同时也使得实现既可用于VBScript也可用于JScript环境的通用脚本库成为可能。

usb视频设备黑屏(Windows7系统摄像头黑屏无法启动的原因及解决方法)矮人dos工具(矮人dos工具增强版)