资讯·论坛·笑话大全·QQ表情·设为首页
发新话题
打印

[java] Java应用:编写高级JavaScript应用代码

Java应用:编写高级JavaScript应用代码

1、创建高级对象
9 ?+ d  e6 k! v6 ?: Z" C- a电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站- D) h& H0 p( I  w: l5 {  p3 I
使用构造函数来创建对象 我爱电脑技术论坛( m" |: x" X2 _

2 Q, z1 G8 P+ c# N4 O" \我爱电脑技术论坛构造函数是一个函数,调用它来例示并初始化特殊类型的对象。可以使用 new 关键字来调用一个构造函数。下面给出了使用构造函数的新示例。 www.520diannao.com0 V$ A5 E5 H" n6 M, m! l
www.520diannao.com0 I8 e$ r+ Z" Q
打造最好的电脑自学交流论坛3 Z9 ^4 D3 g# z6 b
var myObject = new Object(); // 创建没有属性的通用对象。
& H- b; [8 C% t2 W/ t电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
% n2 A" f* `* A1 v我爱电脑技术论坛var myBirthday = new Date(1961, 5, 10); // 创建一个 Date 对象。
8 @$ J. [! ^7 p2 t) n+ _2 G电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
, X0 n9 m; s, r$ v打造最好的电脑自学交流论坛var myCar = new Car(); // 创建一个用户定义的对象,并初始化其属性。 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站6 _' K' [6 g  @3 m1 d: F
我爱电脑技术论坛  ~! P' f3 d2 Z$ g. t
通过构造函数将一个参数作为特定的 this 关键字的值传递给新创建的空对象。然后构造函数负责为新对象执行适应的初始化(创建属性并给出其初始值)。完成后,构造函数返回它所构造的对象的一个参数。
$ u, s3 w4 d3 |7 q3 Y打造最好的电脑自学交流论坛
* _5 k% W' o. {( H" O电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
/ D% Z! T6 g6 ?  C; @我爱电脑技术论坛编写构造函数 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站- S5 E) |& s: a' E: H0 |
www.520diannao.com9 y4 c3 Z; n! c2 W  n/ _( U
可以使用 new 运算符结合像 Object()、Date() 和 Function() 这样的预定义的构造函数来创建对象并对其初始化。面向对象的编程其强有力的特征是定义自定义构造函数以创建脚本中使用的自定义对象的能力。创建了自定义的构造函数,这样就可以创建具有已定义属性的对象。下面是自定义函数的示例(注意 this 关键字的使用)。
1 m5 E/ O1 s8 m% d: ~; {% E! o我爱电脑技术论坛
7 w+ I% t' ?, W; {& z# c  ]我爱电脑技术社区--打造最好的电脑技术自学交流平台电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站- g8 G+ P+ \# e, c7 Q' ]5 g
function Circle (xPoint, yPoint, radius) {
* j! W0 Q, i. \: R: S1 L! ?+ V. Y电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
$ z4 \- [1 h+ x1 Z3 J$ m我爱电脑技术论坛this.x = xPoint; // 圆心的 x 坐标。 打造最好的电脑自学交流论坛/ r% v8 P: j* s. L& N! @3 Z

% u( J/ P! K5 M) j1 l) S& a8 M打造最好的电脑自学交流论坛this.y = yPoint; // 圆心的 y 坐标。 www.520diannao.com" v  a6 T" b% G0 V
打造最好的电脑自学交流论坛& r, {/ v+ }: N) Z
this.r = radius; // 圆的半径。
+ B0 W$ p7 M" H3 c% g; q, Xwww.520diannao.com我爱电脑技术论坛" \' c% v( _/ U( Y4 T
} 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站; u+ x8 \  A& s3 S
打造最好的电脑自学交流论坛3 e( M: i: V+ l/ M* y% k  u
调用 Circle 构造函数时,给出圆心点的值和圆的半径(所有这些元素是完全定义一个独特的圆对象所必需的)。结束时 Circle 对象包含三个属性。下面是如何例示 Circle 对象。
$ Y% p/ }6 H1 _7 ]' Q$ L. N电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
8 Y; _7 r7 _- Z5 B, x( O我爱电脑技术论坛
: E3 p% k4 G  _2 @& Z打造最好的电脑自学交流论坛var aCircle = new Circle(5, 11, 99);
/ Y) b( [* @( _9 |; ]www.520diannao.com
! {6 C' E! e0 ^: k打造最好的电脑自学交流论坛使用原型来创建对象 我爱电脑技术社区--打造最好的电脑技术自学交流平台! j) X. d$ r0 R6 Z
  i6 s- ?& t0 O- \9 U; n+ d
在编写构造函数时,可以使用原型对象(它本身是所有构造函数的一个属性)的属性来创建继承属性和共享方法。原型属性和方法将按引用复制给类中的每个对象,因此它们都具有相同的值。可以在一个对象中 更改原型属性的值,新的值将覆盖默认值,但仅在该实例中有效。属于这个类的其他对象不受此更改的影响。下面给出了使用自定义构造函数的示例,Circle(注意 this 关键字的使用)。
# u& q  g9 K3 s2 s' F
. Z/ m. x$ M) v  y* l; {! _6 `我爱电脑技术论坛) P: K, @, c6 e. E
Circle.prototype.pi = Math.PI; 我爱电脑技术社区--打造最好的电脑技术自学交流平台% D; }* w' W* K3 ?" D. ^- o/ P5 t
打造最好的电脑自学交流论坛' x1 D$ @: V! K" Z
function ACirclesArea () {
# E* W+ f) v0 u* H; Z  x我爱电脑技术论坛
1 g1 g' y3 M7 g3 `8 l" yreturn this.pi * this.r * this.r; // 计算圆面积的公式为 ?r2。 , ~: m& r- X" x, Z2 G
* s/ @+ p6 @0 o/ |1 m& q
}
4 q) T  ]% X4 I& \. L: b( x电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
4 ?  W/ Q. R; @& x/ l& K* V电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站Circle.prototype.area = ACirclesArea; // 计算圆面积的函数现在是 Circle Prototype 对象的一个方法。
6 C" y- B# _# N' @8 [% o0 `+ J8 vwww.520diannao.comwww.520diannao.com0 Y5 }* @" e9 t$ c) p) i$ j) {
var a = ACircle.area(); // 此为如何在 Circle 对象上调用面积函数。
" u0 l. ^9 ?3 C0 |电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
% a1 ]# |& V; I. |  \& U7 I打造最好的电脑自学交流论坛使用这个原则,可以给预定义的构造函数(都具有原型对象)定义附加属性。例如,如果想要能够删除字符串的前后空格(与 VBScript 的 Trim 函数类似),就可以给 String 原型对象创建自己的方法。
! r8 n( F# h7 n# d* Ewww.520diannao.com( k2 q; ]' G6 Q6 [* ?+ }/ i

2 `3 m9 R6 [1 I2 ~我爱电脑技术社区--打造最好的电脑技术自学交流平台// 增加一个名为 trim 的函数作为 ) Z2 F. y6 w  f

- t8 J6 W0 P  m# f( X; k7 ^5 p9 p5 j打造最好的电脑自学交流论坛// String 构造函数的原型对象的一个方法。 www.520diannao.com/ L. {$ w- w# \
我爱电脑技术社区--打造最好的电脑技术自学交流平台" i3 P, f; }2 @
String.prototype.trim = function()
2 w; m$ a6 s. z- u/ w5 C我爱电脑技术论坛我爱电脑技术社区--打造最好的电脑技术自学交流平台' \3 H  `  n* i0 a& |. _* G
{ 我爱电脑技术论坛- ]5 H- v4 ?  Z. t$ o

! ?$ I6 y( N7 ?, c! d我爱电脑技术论坛// 用正则表达式将前后空格
5 K5 G1 l: \9 j0 p7 F, z3 uwww.520diannao.com
  I- [  X$ @% O2 G+ U我爱电脑技术社区--打造最好的电脑技术自学交流平台// 用空字符串替代。 我爱电脑技术社区--打造最好的电脑技术自学交流平台- ?! e8 n8 d; J/ R( |5 Z: q
我爱电脑技术社区--打造最好的电脑技术自学交流平台' V+ u  i$ D8 Y# x' C" O0 U
return this.replace(/(^\s*)|(\s*$)/g, "");
4 O. u6 g/ V1 r! E) L  h& D我爱电脑技术论坛我爱电脑技术社区--打造最好的电脑技术自学交流平台% N- \' \7 i% M; z# j4 H2 Q: M
}
% {8 N) b" K8 T* [$ vwww.520diannao.comwww.520diannao.com. W9 s  m; R( A

; ~4 Q7 m1 i2 I1 L6 Y) W: m// 有空格的字符串 www.520diannao.com* g8 b, |2 t0 _
我爱电脑技术论坛8 l) Q- E$ T( _' n& H
var s = " leading and trailing spaces "; 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站2 v: v$ \8 }3 e' h, O3 M) V% d
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站) H% I; i/ l8 B! C& L& ?! `

& i% I6 O2 n# T打造最好的电脑自学交流论坛// 显示 " leading and trailing spaces (35)" 我爱电脑技术论坛1 s: j) w$ X( p* h! O# d/ t' S/ ^

5 G* z/ b' P9 L- M( J/ I我爱电脑技术社区--打造最好的电脑技术自学交流平台window.alert(s + " (" + s.length + ")");
6 D- m9 h/ p& c2 R" S
! z( I. g8 E: D( S9 x& z+ V我爱电脑技术社区--打造最好的电脑技术自学交流平台/ m6 W+ \8 `1 w) r; C: c; E
// 删除前后空格
5 E- b" ~% `4 Y我爱电脑技术论坛5 @: x! Z4 o9 Q( [+ H
s = s.trim(); 我爱电脑技术社区--打造最好的电脑技术自学交流平台3 ?) z: _/ b  h

7 g6 K9 c6 @. o5 ]) q& Y电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站// 显示"leading and trailing spaces (27)"
1 z% n9 U% l* v4 s) @) e打造最好的电脑自学交流论坛
$ F8 z" T7 h) P- d- ]; ~& o+ L我爱电脑技术社区--打造最好的电脑技术自学交流平台window.alert(s + " (" + s.length + ")"); www.520diannao.com" j# q3 y! {! ?* Y+ S! l

" T( Q. I9 y$ X# Q我爱电脑技术论坛电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站9 h9 f$ L  {5 t* S
2.递归 8 v$ Q( Q  i. v5 h" Y7 V9 _
" |; R$ ?% \. i6 d  Y. ]8 i( {$ P# q
递归是一种重要的编程技术。该方法用于让一个函数从其内部调用其自身。一个示例就是计算阶乘。0 的阶乘被特别地定义为 1。 更大数的阶乘是通过计算 1 * 2 * ...来求得的,每次增加 1,直至达到要计算其阶乘的那个数。 " g& s1 k# J' v2 U0 z
我爱电脑技术社区--打造最好的电脑技术自学交流平台' w) L" i2 G2 r, |8 B

! e; p  e! |% A6 J* L) G+ [下面的段落是用文字定义的计算阶乘的一个函数。
1 f) g) Z. r: q; H* j' ?5 l我爱电脑技术社区--打造最好的电脑技术自学交流平台) e+ ~7 N! S8 F
  e8 y" T" }/ V/ ^, z! R
“如果这个数小于零,则拒绝接收。如果不是一个整数,则将其向下舍入为相邻的整数。如果这个数为 0,则其阶乘为 1。如果这个数大于 0,则将其与相邻较小的数的阶乘相乘。”
  p! i& l8 H5 x$ Z% F8 W8 e打造最好的电脑自学交流论坛
" Q/ D8 n) g/ z) V0 }3 U我爱电脑技术论坛打造最好的电脑自学交流论坛# }  j* b, @' G- g
要计算任何大于 0 的数的阶乘,至少需要计算一个其他数的阶乘。用来实现这个功能的函数就是已经位于其中的函数;该函数在执行当前的这个数之前,必须调用它本身来计算相邻的较小数的阶乘。这就是一个递归示例。 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站4 V" N" S4 k4 T; M
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站0 \" ^3 G* G8 v& r
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站9 W/ |6 m! ^3 W
递归和迭代(循环)是密切相关的 ? 能用递归处理的算法也都可以采用迭代,反之亦然。确定的算法通常可以用几种方法实现,您只需选择最自然贴切的方法,或者您觉得用起来最轻松的一种即可。 我爱电脑技术社区--打造最好的电脑技术自学交流平台* ~2 n1 x- E- }1 t. f2 K
我爱电脑技术论坛; d+ [4 N4 J. w. e/ F- I" g" l: w0 P6 h

5 ?$ M9 h+ s& M! q8 N2 w4 ?www.520diannao.com显然,这样有可能会出现问题。可以很容易地创建一个递归函数,但该函数不能得到一个确定的结果,并且不能达到一个终点。这样的递归将导致计算机执行一个“无限”循环。下面就是一个示例:在计算阶乘的文字描述中遗漏了第一条规则(对负数的处理) ,并试图计算任何负数的阶乘。这将导致失败,因为按顺序计算 -24 的阶乘时,首先不得不计算 -25 的阶乘;然而这样又不得不计算 -26 的阶乘;如此继续。很明显,这样永远也不会到达一个终止点。
1 Z1 |% q" d: B! b打造最好的电脑自学交流论坛我爱电脑技术社区--打造最好的电脑技术自学交流平台3 B5 a! p" i; o- Q  \
3 j! C  l5 f' ^9 N
因此在设计递归函数时应特别仔细。如果怀疑其中存在着无限递归的可能,则可以让该函数记录它调用自身的次数。如果该函数调用自身的次数太多,即使您已决定了它应调用多少次,就自动退出。

TOP

下面仍然是阶乘函数,这次是用 JScript 代码编写的。 我爱电脑技术论坛; |0 I% N/ ?8 B# j. s+ _3 ]- T

; C& W  y6 x, n4 {# X0 s我爱电脑技术社区--打造最好的电脑技术自学交流平台www.520diannao.com+ l; J- i" X: q
// 计算阶乘的函数。如果传递了
5 G& j5 S  ?7 j1 a( Xwww.520diannao.com
$ @8 M, M4 ^) `6 p3 O// 无效的数值(例如小于零), 打造最好的电脑自学交流论坛3 X. I) \9 Y* q) t6 K

2 j$ s1 P" b' G# L6 z6 D# e我爱电脑技术社区--打造最好的电脑技术自学交流平台// 将返回 -1,表明发生了错误。若数值有效, 打造最好的电脑自学交流论坛3 k  V. n% r9 V/ o# ~

7 y  B4 H! i" @% U+ }0 [" f% m// 把数值转换为最相近的整数,并
3 l( Q  U1 T' d4 x) X+ {我爱电脑技术论坛我爱电脑技术论坛" G7 e' N  b, g/ X% ]3 n( f
// 返回阶乘。 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站$ v/ R6 i' j4 H2 E( d

3 v2 l$ m* x3 {  J" b# Z我爱电脑技术社区--打造最好的电脑技术自学交流平台function factorial(aNumber) { 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站+ t+ P# R# Q0 E3 x

$ s4 }3 F5 u) g- R: F我爱电脑技术论坛aNumber = Math.floor(aNumber); // 如果这个数不是一个整数,则向下舍入。
* @+ I* q& x& r, o6 d8 t打造最好的电脑自学交流论坛我爱电脑技术论坛7 x( s0 L% F" z% ~" v; i
if (aNumber < 0) { // 如果这个数小于 0,拒绝接收。
; G" Q8 Y$ t' y- ?我爱电脑技术论坛
$ _8 Y, B, b# }8 o$ D9 I; Hreturn -1; 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站! s4 M0 G8 M- t5 `

* m6 Z4 p" L" twww.520diannao.com}
& t( S$ Y& F" }4 b0 P  d我爱电脑技术论坛www.520diannao.com- ]( ~* G: r5 w
if (aNumber == 0) { // 如果为 0,则其阶乘为 1。 8 a" `8 ?9 p7 F; e0 F" G; }
打造最好的电脑自学交流论坛5 x- Q: R& n- L2 q* w3 ^" k: Z
return 1;
: H: l9 T: m4 C% }我爱电脑技术论坛, \$ V# y; b) r3 v
}
9 |* e' F* H+ Z我爱电脑技术论坛打造最好的电脑自学交流论坛. I4 J6 p$ J5 |1 R' R6 ]
else return (aNumber * factorial(aNumber - 1)); // 否则,递归直至完成。
! C" w& U5 `; Q" t  z9 O6 \- v4 z
/ A' Q4 p4 v2 b% L我爱电脑技术论坛}
5 C% r  b" f9 e) k4 Q8 s
, [% g1 p4 l% ]+ U5 M0 O我爱电脑技术论坛www.520diannao.com# o- e  `/ ~, U. n/ d( x
3.变量范围
: z: ~" v& T6 d打造最好的电脑自学交流论坛www.520diannao.com: j1 W* |/ k# C2 [" s
JScript 有两种变量范围:全局和局部。如果在任何函数定义之外声明了一个变量,则该变量为全局变量,且该变量的值在整个持续范围内都可以访问和修改。如果在函数定义内声明了一个变量,则该变量为局部变量。每次执行该函数时都会创建和破坏该变量;且它不能被该函数外的任何事物访问。
6 F" }3 n0 ?+ z我爱电脑技术社区--打造最好的电脑技术自学交流平台我爱电脑技术论坛; q2 g' H+ b+ A6 ]) _  V

9 g: {$ h6 `% ?像 C++ 这样的语言也有“块范围”。在这里,任何一对“{}”都定义新的范围。JScript 不支持块范围。 打造最好的电脑自学交流论坛7 K' A9 H) Q2 x7 Y2 N9 X+ {% k

- K9 ~5 V6 N: [  d) ?$ z3 ^/ i打造最好的电脑自学交流论坛/ q, H3 W- z" D: H# Y$ ~
一个局部变量的名称可以与某个全局变量的名称相同,但这是完全不同和独立的两个变量。因此,更改一个变量的值不会影响另一个变量的值。在声明局部变量的函数内,只有该局部变量有意义。
& R8 S/ t& N& p" q
* a; s% e* L) {' v: w! j我爱电脑技术论坛我爱电脑技术社区--打造最好的电脑技术自学交流平台+ D; \! K, O+ [# G* y5 F- U
var aCentaur = "a horse with rider,"; // aCentaur 的全局定义。
& }. W0 C' c5 p0 N我爱电脑技术社区--打造最好的电脑技术自学交流平台
% }0 w" r1 D! a2 q! b, M: ~% j
" G  Q- W; I! e% I( n3 T- v5 y$ R+ O* n打造最好的电脑自学交流论坛// JScript 代码,为简洁起见有省略。 www.520diannao.com+ B, o+ f2 u0 d4 [& [

  k7 `; J  o' L' K: j/ q% kwww.520diannao.comfunction antiquities() // 在这个函数中声明了一个局部 aCentaur 变量。 我爱电脑技术论坛' {2 N! T4 w# J: G% _; L! p. f( @

9 |2 L: R) f( Gwww.520diannao.com{ 我爱电脑技术论坛0 s0 A9 S* s4 R9 G! Y) C
我爱电脑技术论坛3 X( e% ~' g9 m3 l9 q0 s! J

, Z7 f9 l4 v% dwww.520diannao.com// JScript 代码,为简洁起见有省略。
( ]( P# U  [+ ]0 [: n9 q! r我爱电脑技术社区--打造最好的电脑技术自学交流平台0 F6 E8 e% `9 p. y0 m) w
var aCentaur = "A centaur is probably a mounted Scythian warrior"; 我爱电脑技术社区--打造最好的电脑技术自学交流平台& s! N' ^8 t7 d2 }  L. x7 I

0 w* x4 l! s4 J/ R# m. owww.520diannao.com
1 v/ s& ~( q; L/ I7 I4 Y) e打造最好的电脑自学交流论坛// JScript 代码,为简洁起见有省略。
# z7 q" J: A8 F4 A5 v' X电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站$ Q, [6 d1 t8 s
aCentaur += ", misreported; that is, "; // 添加到局部变量。 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站7 `4 z% S- R4 F0 B; o+ C

' R8 F, r3 T5 j; |7 B; [我爱电脑技术论坛
$ A( Z, C. e* U+ U+ ~# d1 @" m9 T6 Z我爱电脑技术论坛// JScript 代码,为简洁起见有省略。 我爱电脑技术社区--打造最好的电脑技术自学交流平台8 u8 v5 _3 ^- p

4 y* W3 x& @! j2 q} // 函数结束。
& }# V) G% w! u" Y电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站我爱电脑技术论坛( y6 G3 J& l7 K7 e* \

' r; `( v$ J2 N6 c2 x我爱电脑技术论坛var nothinginparticular = antiquities();
6 A6 F% q* f$ f1 ?+ n6 }打造最好的电脑自学交流论坛电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站" l  Z3 V: g1 O1 t- Q1 @$ J( P
aCentaur += " as seen from a distance by a naive innocent.";
3 n# B- s9 ^  k打造最好的电脑自学交流论坛我爱电脑技术社区--打造最好的电脑技术自学交流平台4 a3 ?+ J0 s3 a. |5 c0 D6 R) d

) J, o& |( T8 c: H9 M- \. }www.520diannao.com/*
( D$ V/ S5 K( y
$ J; G' }/ B" K5 P6 m7 h7 a我爱电脑技术社区--打造最好的电脑技术自学交流平台在函数内,该变量的值为 "A centaur is probably a mounted Scythian warrior, www.520diannao.com7 w* ], y, h! q/ H+ [
我爱电脑技术论坛0 x$ E7 x5 t3 u5 W8 {, E
misreported; that is, ";在函数外,该变量的值为这句话的其余部分:
" T: W% e8 s$ v0 b3 H& D我爱电脑技术论坛' B7 u8 ?* E3 W: H% Y( _$ |% F
"a horse with rider, as seen from a distance by a naive innocent." 4 \' K  Y9 P2 i# M) B" K
我爱电脑技术论坛/ {2 M. T2 n7 j. t" o
*/
$ E4 G+ v" Y9 P, q: i8 S我爱电脑技术论坛
5 X4 F: L/ q" y' wwww.520diannao.com很重要的一点是注意变量是否是在其所属范围的开始处声明的。有时这会导致意想不到的情况。
4 \6 l' o2 M/ a( ~+ y! twww.520diannao.com
% V+ ^: o; Q! [' N5 ~www.520diannao.com我爱电脑技术社区--打造最好的电脑技术自学交流平台$ W! R) v: ^6 G
tweak(); 打造最好的电脑自学交流论坛  O9 l# L- w7 K; _
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站, x" M+ R3 N. h; J& ^
var aNumber = 100;
' J* O/ D' m2 N; p, V电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
3 T  B6 Z  b* L* T7 ~/ O3 c打造最好的电脑自学交流论坛function tweak() { 我爱电脑技术社区--打造最好的电脑技术自学交流平台/ l1 K0 w9 a1 c
打造最好的电脑自学交流论坛; c  `$ F; O$ y' p* \
var newThing = 0; // 显式声明 newThing 变量。 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站- k0 A1 ?% ~, n/ E, A9 R
www.520diannao.com1 {0 J( O4 S- O3 u/ T( o- r
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站6 Z; a2 H1 t/ }2 _8 j8 p/ P! t4 \
// 本语句将未定义的变量赋给 newThing,因为已有名为 aNumber 的局部变量。
! {- f" Z# p! h6 b( D打造最好的电脑自学交流论坛
) \4 s) }) n+ S4 K. o打造最好的电脑自学交流论坛newThing = aNumber;
) J: J& `& O/ R0 [* a* Z, k; f- q我爱电脑技术社区--打造最好的电脑技术自学交流平台
; R& f6 A" K+ @; N. l- p4 ^; L我爱电脑技术论坛我爱电脑技术社区--打造最好的电脑技术自学交流平台6 n1 I. Y( E' r& w' r8 I
//下一条语句将值 42 赋给局部的 aNumber。aNumber = 42;
$ b* C+ O% U% s# _www.520diannao.com
# [' w: x, q" R$ J电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站if (false) {
2 h  J$ X) a, uwww.520diannao.com我爱电脑技术论坛6 o: U! |0 d  g3 O. [8 d) u# B
var aNumber; // 该语句永远不会执行。
- Y7 U6 W$ G' _- ]+ C( ywww.520diannao.com
  }& B& R( R5 a" @2 C' C6 |我爱电脑技术社区--打造最好的电脑技术自学交流平台aNumber = 123; // 该语句永远不会执行。 www.520diannao.com; n2 m. x) m9 D9 p( }7 g) [

7 e0 f9 w8 c) Bwww.520diannao.com} // 条件语句结束。
+ }: n( R% q1 f1 R7 H- x! P我爱电脑技术论坛
0 I& U  l! R: }$ Q( ?. n打造最好的电脑自学交流论坛  m  D5 W, ^  f, I% K
} // 该函数定义结束。 我爱电脑技术论坛9 d0 B! Y( n, F

1 _2 T8 S( a& H/ C, X电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站当 JScript 运行函数时,首先查找所有的变量声明,
' s1 n6 x2 R" v, W' p电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
# |0 T; p! q% n% Z( E% ~8 q5 ]% y8 J* D/ x" `
var someVariable;
. q$ E. C, M% M/ ?( u  H' f* g7 H8 P- Y4 G  n
并以未定义的初始值创建变量。如果变量被声明时有值,
! `; ^5 r1 K, K% ]打造最好的电脑自学交流论坛我爱电脑技术社区--打造最好的电脑技术自学交流平台" l7 `3 q. C) W) T5 b. F
www.520diannao.com! c" @/ r& \7 t+ {( e2 K8 ?
var someVariable = "something"; 我爱电脑技术论坛* s2 h6 I2 N! ^0 C

! P7 |- P% F+ o/ T' I: swww.520diannao.com那么该变量仍以未定义的值初始化,并且只有在运行了声明行时才被声明值取代,假如曾经被声明过。
! w9 @: W% o0 Zwww.520diannao.com打造最好的电脑自学交流论坛5 u$ @) w: Q5 t% ^
我爱电脑技术论坛7 C/ S6 k! q7 [8 R/ J- L, X
JScript 在运行代码前处理变量声明,所以声明是位于一个条件块中还是其他某些结构中无关紧要。JScript 找到所有的变量后立即运行函数中的代码。如果变量是在函数中显式声明的 ? 也就是说,如果它出现于赋值表达式的左边但没有用 var 声明 ? 那么将把它创建为全局变量。
. X: p- t3 n5 I2 x; L% ^电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站7 ]8 l( o6 r+ L4 }
复制、传递和比较数据
6 U; M3 T1 [& X" x, V我爱电脑技术论坛www.520diannao.com7 Y$ ^) X! q% o6 H1 d
在 JScript 中,对数据的处理取决于该数据的类型。
3 t1 \9 N' Q, a; \1 [打造最好的电脑自学交流论坛
( u$ E, T- s( ~  [3 G我爱电脑技术社区--打造最好的电脑技术自学交流平台
& W" B5 ~$ c- W  j* m. o$ l电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站按值和按引用的比较 我爱电脑技术论坛. a, J0 H( h7 ~! s: N% Y2 I* \
我爱电脑技术论坛6 B! |# f, H) `; f; m2 D" b* E
Numbers 和 Boolean 类型的值 (true 和 false) 是按值来复制、传递和比较的。当按值复制或传递时,将在计算机内存中分配一块空间并将原值复制到其中。然后,即使更改原来的值,也不会影响所复制的值(反过来也一样),因为这两个值是独立的实体。
# E5 Z# i/ n2 {( z- E( X- T3 {/ Uwww.520diannao.com
- N0 n+ }5 a* I7 R. z9 I我爱电脑技术论坛我爱电脑技术论坛- |. e) M. t* v% e
对象、数组以及函数是按引用来复制、传递和比较的。 当按地址复制或传递时,实际是创建一个指向原始项的指针,然后就像拷贝一样来使用该指针。如果随后更改原始项,则将同时更改原始项和复制项(反过来也一样)。实际上只有一个实体;“复本”并不是一个真正的复本,而只是该数据的又一个引用。
- x1 `1 O* \& O3 S! L/ q2 o3 {我爱电脑技术社区--打造最好的电脑技术自学交流平台打造最好的电脑自学交流论坛6 {9 L  z; @& x& f* N( M
www.520diannao.com+ K" j3 d8 M9 ?0 r5 u5 Q+ C9 e" u
当按引用比较时,要想比较成功,两个变量必须参照完全相同的实体。例如,两个不同的 Array 对象即使包含相同的元素也将比较为不相等。要想比较成功,其中一个变量必须为另一个的参考。要想检查两个数组是否包含了相同的元素,比较 toString() 方法的结果。 4 i3 U% Q- b2 j* c

, X; t# ~. e9 z% p
1 ^* ]$ x8 ]2 T7 ?8 V* c! u7 d打造最好的电脑自学交流论坛最后,字符串是按引用复制和传递的,但是是按值来比较的。请注意,假如有两个 String 对象(用 new String("something") 创建的),按引用比较它们,但是,如果其中一个或者两者都是字符串值的话,按值比较它们。
  l7 K8 g! c- n! `7 h我爱电脑技术社区--打造最好的电脑技术自学交流平台
0 O4 y! j7 p3 Z+ n  F/ O  k电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站打造最好的电脑自学交流论坛/ N1 Q1 @' \+ x0 {7 I8 F* \* f* ?
注意 鉴于 ASCII和 ANSI 字符集的构造方法,按序列顺序大写字母位于小写字母的前面。例如 "Zoo" 小于 "aardvark"。如果想执行不区分大小写的匹配,可以对两个字符串调用 toUpperCase() 或 toLowerCase()。 我爱电脑技术论坛* K" \! D5 Z) w6 {

+ r: {/ u8 _. b6 F: B# F% x0 {打造最好的电脑自学交流论坛www.520diannao.com4 [+ I6 a+ V0 U$ X3 z6 _
传递参数给函数
" \5 d2 R# c( {/ f7 A我爱电脑技术论坛
9 r% B; C( X& w) c3 R* @电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站按值传递一个参数给函数就是制作该参数的一个独立复本,即一个只存在于该函数内的复本。即使按引用传递对象和数组时,如果直接在函数中用新值覆盖原先的值,在函数外并不反映新值。只有在对象的属性或者数组的元素改变时,在函数外才可以看出。
; w2 ?6 U- p2 j7 j7 _" f* x打造最好的电脑自学交流论坛
4 ]$ W. ]$ h+ A/ [" h我爱电脑技术论坛
1 R9 E; S' R' o. R我爱电脑技术论坛例如(使用 IE 对象模式):
* @  f3 `" G* E$ T/ P- z我爱电脑技术社区--打造最好的电脑技术自学交流平台7 k/ E- o( e  S6 Q$ [

$ j' u" K; H/ [- r' a; `0 A) F0 B" X我爱电脑技术论坛// 本代码段破坏(覆盖)其参数,所以
5 H( ?3 {2 {; J1 ~
) o' a" S8 Y' l+ c2 m- [我爱电脑技术社区--打造最好的电脑技术自学交流平台// 调用代码中反映不出变化。
4 H, u5 r# z, c* e7 p6 owww.520diannao.com' Q  Y* e0 ]1 s. D
function Clobber(param) 我爱电脑技术社区--打造最好的电脑技术自学交流平台  N8 w/ |9 A9 m# A4 n5 q% u0 g- |( V

2 F: A( S8 n% N* r. Z, s+ a打造最好的电脑自学交流论坛{ 我爱电脑技术社区--打造最好的电脑技术自学交流平台/ T! S* Y; K& y$ w& i6 L7 H
8 k. J" Y5 J! i4 f7 a6 z
// 破坏参数;在调用代码中
2 }( R* K& [3 L: p! B( R2 U& W我爱电脑技术社区--打造最好的电脑技术自学交流平台
0 j, u+ D) E) ^- n, f打造最好的电脑自学交流论坛// 看不到。 www.520diannao.com. J) P5 L3 O4 [4 c" G4 v. G
www.520diannao.com$ p. A: v: W5 L4 J+ ~( |
param = new Object();
% R; I* h5 U6 b! P打造最好的电脑自学交流论坛
( ~# Z0 V+ t/ G9 u" e/ Q我爱电脑技术社区--打造最好的电脑技术自学交流平台param.message = "This will not work"; 打造最好的电脑自学交流论坛2 w8 J0 F4 u) A, q9 [

, f, N7 ^6 R! v% `0 o, m% c# c}
9 V; E5 w4 M$ a我爱电脑技术社区--打造最好的电脑技术自学交流平台
# K5 J5 R- o% _) K$ N我爱电脑技术社区--打造最好的电脑技术自学交流平台
! {, V0 d9 l7 n  d5 E8 ^# w) r6 ]www.520diannao.com// 本段代码改变参数的属性, 打造最好的电脑自学交流论坛& \1 L( z) n" F# O& x2 g% d
打造最好的电脑自学交流论坛9 D' A) K) F+ b* f8 n7 T
// 在调用代码中可看到属性改变。
7 b# ?% e9 u  `* B我爱电脑技术论坛www.520diannao.com  H& N: u- P* ~1 N
function Update(param) 6 h7 e" B8 |! D+ x) n

7 f& ~6 g4 \% y, c3 `{
$ T& ~5 C# C0 R0 n9 R打造最好的电脑自学交流论坛, F$ `& H3 f4 H: l5 T
// 改变对象的属性; 我爱电脑技术论坛8 ?2 G9 W( Q% `$ s% L3 x
www.520diannao.com1 l5 r; D% |9 s! h6 F5 ^
// 可从调用代码中看到改变。 1 q  [- R. t% o" X8 q; c

% s1 G. N% }& d( bparam.message = "I was changed"; 我爱电脑技术论坛+ a/ b1 W8 |/ U* [9 ]1 L. O

# V6 K, _3 a' p, x( _我爱电脑技术社区--打造最好的电脑技术自学交流平台} 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站6 R( a# q% T0 g9 e* D5 w  ^
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站( q/ G) e. T# e2 s+ r
电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站" A! Z6 _5 |# O
// 创建一个对象,并赋给一个属性。 我爱电脑技术社区--打造最好的电脑技术自学交流平台) m7 G% a0 n" v  \! g1 j( V; [

5 ]0 Z8 |" ?0 C: V4 z0 s# Xvar obj = new Object();
. m% f, q1 W6 r; ~www.520diannao.com打造最好的电脑自学交流论坛% K* Z* s) c( B- l: U! b  l
obj.message = "This is the original"; 我爱电脑技术社区--打造最好的电脑技术自学交流平台, i) o) e3 L* ]8 s" Y% b

) u# r0 b1 W% {0 I; s我爱电脑技术论坛
0 M  E8 N8 w: e7 q2 n9 Iwww.520diannao.com// 调用 Clobber,并输出 obj.message。注意,它没有发生变化。 1 p4 ^. Y, R/ H2 P& a/ l/ D: ^. d
我爱电脑技术社区--打造最好的电脑技术自学交流平台( j- [. p6 f, H: M. k) |
Clobber(obj); 打造最好的电脑自学交流论坛& G( D3 V$ U4 u9 @/ T9 z

/ X" z7 a* [& W; ^我爱电脑技术论坛window.alert(obj.message); // 仍然显示 "This is the original"。 打造最好的电脑自学交流论坛# K' P4 `0 v/ [+ B/ @: H

1 {7 a% }% j& r6 X9 x# C+ V9 ^, o我爱电脑技术社区--打造最好的电脑技术自学交流平台电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站% n6 A0 V7 U+ v4 ~
// 调用 Update,并输出 obj.message。注意,它已经被改变了。 打造最好的电脑自学交流论坛8 ?: j3 n) j" P# Q/ s' b  B

# Q  I7 x2 T3 X# E( b& H我爱电脑技术社区--打造最好的电脑技术自学交流平台Update(obj); 我爱电脑技术社区--打造最好的电脑技术自学交流平台2 P5 o" b' {: f" r

: ]( u/ [+ s4 l  _, j电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站window.alert(obj.message); // 显示 "I was changed"。 电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站4 \9 R8 S8 K4 b4 P

( _' u) }; u. g5 p4 E  s打造最好的电脑自学交流论坛检验数据 打造最好的电脑自学交流论坛' o( Z( t% B  h# {+ k& J8 h

3 E$ k# m, e* I* o# f4 Z" b& n当按值进行检验时,是比较两个截然不同的项以查看它们是否相等。通常,该比较是逐字节进行的。当按引用进行检验时,是看这两项是否是指向同一个原始项的指针。如果是,则比较结果是相等;如果不是,即使它们每个字节都包含完全一样的值,比较结果也为不相等。
2 D3 n& g6 \  X, w  F' G9 q电脑,技术,IT,学习,交流,网络安全,QQ,硬件,软件,编程,教程,建站
$ e0 M9 c9 J/ ~& gwww.520diannao.com4 l& b0 p4 M/ S6 Q
按引用复制和传递字符串能节约内存;但是由于在字符串被创建后不能进行更改,因此可以按值进行比较。这样可以检查两个字符串是否包含相同的内容,即使它们是完全独立产生的。

TOP

谢谢分享!

TOP

发新话题