Object-Oriented JavaScript笔记(一)

Object-Oriented JavaScript 笔记
Object-Oriented JavaScript笔记(一)
Object-Oriented JavaScript笔记(二)
Object-Oriented JavaScript笔记(三)
Object-Oriented JavaScript笔记(四)
Object-Oriented JavaScript笔记(五)
Object-Oriented JavaScript笔记(六)
Object-Oriented JavaScript笔记(七)

第二章 基本数据类型、数组、循环和条件语句

变量是大小写敏感的

基本类型

基本类型(5类) Number、String、Boolean、Undefined、Null
除了基本类型外的,都是object,特例
>>> typeof null
“object”

Infinity是number类型的
>>> typeof Infinity
“number”

JS中最大的数是1.7976931348623157e+308 最小的分数是5e-324

非0数除以0得到Infinity,0除以0得到NaN
1/0 = Infinity
0/0 = NaN

Infinity 与非NaN运算值为Infinity
Infinity – 1 = Infinity

NaN 与任何number运算值为NaN

一个String与一个变量做除’+'(加)以外的运算,都会转换成做数学运算
>>> var s = ‘3’; s = 3 * s; typeof s;
“number”

>>> var s = ‘3’; s = 3 + s; typeof s;
“string”

两次逻辑非操作会做强制布尔转换。大部分情况都是为真,除非:
1.空字符串 ”
2.null
3.undefined
4.数 0
5.数 NaN
6.布尔值 false

利用惰性求值(Lazy Evaluation)做保护伞并不是处处受用
var mynumber = mynumber || 10;

如果预先定义的 mynumber =0 ,这里就不是我们所预料的了。

=== 值与类型比较
!== 不含类型转换的不等于比较

NaN不与任何值相等,包含其自身
>>> NaN == NaN
false

null值并不是由js环境给分配的,而是由代码给分配的
>>> var value = null;
>>> typeof value
“object”

undefined与null还是大差别虽然微小,但是不容忽视
>>> var i = 1 + undefined;
>>> i
NaN

>>> var i = 1 + null;
>>> i
1

这种差异发生在类型转换上
>>> var i = 1*undefined;
>>> i
NaN

>>> var i = 1*null;
>>> i
0

数组

数组新添加元素索引跟数组最大索引之间有空隙的话,会被undefined值填充
>>> var abc = [1];
>>> abc[3] = 5;
>>> abc
[1, undefined, undefined, 5]

删除数组中的元素并不会改变数组大小,仅将删除位置为undefined
>>> var a = [1, 2, 3];
>>> delete a[2];
>>> a
[1, 2, undefined]

可以使用数组下标的形式访问字符串
>>> var s = ‘one’;
>>> s[0]
“o”

循环和条件语句

通常情况下我们会把变量放if条件中做检查,但这样做并不一定妥当,变量可能存在但值为false
>>> var result = ”;>>> if (somevar){result = ‘yes’;}
somevar is not defined
>>> result;
“”
一种更好的方式
>>> if (typeof somevar !== “undefined”){result = ‘yes’;}
>>> result;
“”

default是可以放在switch里任意位置的,并不一定是最后

-EOF-

[CentOS]如何清空登陆历史记录(wtmp/btmp)?

在Linux系统中,可以使用last命令查看用户登陆成功的记录(Last Logged In Users);以及可以用lastb查看登陆失败的记录(Bad Login Attemps Log)。它们以文件形式(wtmp/btmp)存在/var/log/目录下,时间长了不免会变得越来越大,这时候我们需要做一些清理工作。

1.备份wtmp/btmp

2.清空wtmp/btmp
使用命令

或者

上面的例子为清空登陆成功记录,将wtmp改成btmp即清空失败记录。
-EOF-

获得git版本库地址

有时候我们需要快速的确定当前版本库remote服务器的路径,以确定是否pull或push。
像svn可以使用:

hg可以使用:

从而快速的获得远端服务器地址.

而git也不例外,它也有相关的命令,只是比较复杂一点:

使用这个命令便可获得git库地址,虽然长点但有总比没有好。
-EOF-

JavaScript 模板存放方法小结

Web开发时常常需要在页面种存放JavaScript需要使用到的html模板片段,这里是我使用过的三种方式,欢迎补充。

1.使用隐藏的div存放
如放一段{{ mustache }}的模板:

刚做web开发那会常使用这种方法来放html模板片段,但这种情况下里面的内容会被页面解析,特别是当img标签在里面的时候,由于src还没有被赋具体的URL,浏览器就会向服务器发一条无意义的请求,导致服务器产生不必要的404日志。

2.使用隐藏的textarea存放
后来想了个办法,既然textarea里的内容不会被解析,那可以把模板内容放到隐藏的textarea里。

3.使用script标签指定浏览器不认识的type来存放
再后来,了解到浏览器当遇到不认识的script类型时就不会解析里面的内容,就慢慢习惯将模板内容放在script标签里,赋上一个浏览器不认识的类型(如: text/tpl),这样连display:none的也省了。

当然,还有把模板压缩成JS字符串,使用一个js常量的来保存html模板。这种情况下一般需要借助外部工具来压缩成字符串,直接手工处理费时且容易出错。
-EOF-

在Mac OS X中更改Web Sharing目录

在Mac OS X中可以很方便的通过开启“Web共享”启用Apache服务:
设置方法如下:

打开“系统设置偏好(System Preferences)” -> “共享(Sharing)” -> “Web共享(Web Sharing)”选中即可

系统默认给当前用户的访问目录是http://localhost/~username的形式,指向的是用户home目录下的Sites目录。而很多情况下我们希望直接访问根目录(http://localhost/)便可直接访问自己的Sites目录而非系统默认的目录。
做如下更改即可:
1.打开/etc/apache2/httpd.conf文件

2.找到

替换成

其中{username}是你登陆用户名,如:

3.重启“Web共享(Web Sharing)” (去掉勾再重新选中即可)

重启成功后,无需再加上用户名,便可以使用http://localhost/直接访问自己Sites目录下的内容。
-EOF-