LHS和RHS的含义是”赋值操作符的左侧或右侧”,并不一定意味着就是“=赋值操作符的左侧或右侧“。赋值操作还有其他几种形式,因此在概念上最好将其理解为”赋值操作的目标是谁(LHS)“以及”谁是赋值操作的源头(RHS)“。
比如下面这个例子:
1 | function foo(a){ |
LHS和RHS的含义是”赋值操作符的左侧或右侧”,并不一定意味着就是“=赋值操作符的左侧或右侧“。赋值操作还有其他几种形式,因此在概念上最好将其理解为”赋值操作的目标是谁(LHS)“以及”谁是赋值操作的源头(RHS)“。
比如下面这个例子:
1 | function foo(a){ |
使用location 对象可以通过很多方式来改变浏览器的位置。如:
1 | location.assign("http://www.wrox.com"); |
或:
1 | window.location = "http://www.wrox.com"; |
创建自定义类型的最常见方式,就是组合使用构造函数模式与原型模式。构造函数模式用于定义实例属性,而原型模式用于定义方法和共享的属性。结果,每个实例都会有自己的一份实例属性的副本,但同时又共享着对方法的引用,最大限度地节省了内存。另外,这种混成模式还支持向构造函数传递参数。如:
定制JSP标签可以实现一些JSTL和EL没有提供的功能,基本步骤就是编写标签处理器然后注册标签。从JSP2.0以后,可以直接编写标签文件(.tag)来代替定制JSP标签。
相比定制JSP标签,标签文件无需编写Java代码,无需注册标签,只需要在tag文件中写代码逻辑即可。
一个简单的例子:
在WEB-INF下创建tags文件夹,然后在里面新建一个firstTag.tag文件:
1 | <%@tag import="java.util.Date"%> |
我们编写的程序除了自身会定义一些数据信息外,经常还会引用外界的数据,或是将自身的数据发送到外界。比如,我们编写的程序想读取一个文本文件,又或者我们想将程序中的某些数据写入到一个文件中。这时我们就要使用输入与输出。
什么是输入(read):输入是一个从外界进入到程序的方向,通常我们需要“读取”外界的数据时,使用输入。所以输入是用来读取数据的。
什么是输出(write):输出是一个从程序发送到外界的方向,通常我们需要”写出”数据到外界时,使用输出。所以输出是用来写出数据的。