2016年4月26日
[TOC]
2016年4月26日
javascript
对象
所谓对象,就是一种无序的数据集合,由若干个“键值对”(key-value)构成。 对象的所有键名都是字符串,所以加不加引号都可以。
如果键名不符合标识名的条件(数字、空格或者运算符),也不是数字,则必须加上引号。
JavaScript的保留字可以不加引号当作键名。
如果键名是数字,则会默认转为对应的字符串。
对象生成
操作属性
读取对象的属性,有两种方法,一种是使用点运算符,还有一种是使用方括号运算符。
如果使用方括号运算符,键名必须放在引号里面,否则会被当作变量处理。但是,数字键可以不加引号,因为会被当作字符串处理。
所有全局变量都是window对象的属性。如果该属性不存在,就返回undefined,并不会报错。
查看所有属性
删除属性
一旦使用delete命令删除某个属性,再读取该属性就会返回undefined,而且Object.keys方法返回的该对象的所有属性中,也将不再包括该属性。
对象的引用
如果不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址。修改其中一个变量,会影响到其他所有变量。
o1和o2指向同一个对象,然后o1的值变为1,这时不会对o2产生影响。
in运算符
in运算符用于检查对象是否包含某个属性(注意,检查的是键名,不是键值),如果包含就返回true,否则返回false。
在JavaScript语言中,所有全局变量都是顶层对象(window)的属性。 in运算符的一个问题是,它不能识别对象继承的属性。
hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性。
for…in循环
for...in循环用来遍历一个对象的全部属性。 for...in循环遍历的是对象所有可enumberable的属性,包括对象本身的属性,还包括对象继承的属性
如果只想遍历对象本身的属性,可以使用hasOwnProperty方法:
with语句
它的作用是操作同一个对象的多个属性时。
with区块内部的变量,必须是当前对象已经存在的属性,否则会创造一个当前作用域的全局变量。
数值
两个字符串进行比较时,按照字典顺序进行比较。 JavaScript引擎内部首先比较首字符的Unicode编号,如果相等,再比较第二个字符的Unicode编号,以此类推。
小写的c的Unicode编号(99)大于大写的C的Unicode编号(67)。
同一类的复合类型值
两个复合类型(对象、数组、函数)的数据比较时,不是比较它们的值是否相等,而是比较它们是否指向同一个对象。
严格相等运算比较的是它们的内存地址是否一样,而上面代码中空对象、空数组、空函数的值,都存放在不同的内存地址,结果当然是false。
相等运算符
原始类型的值
原始类型的数据会转换成数值类型再进行比较。
对象与原始类型值比较
对象(这里指广义的对象,包括数值和函数)与原始类型的值比较时,对象转化成原始类型的值,再进行比较。
上面代码将只含有数值1的数组与原始类型的值进行比较,数组[1]会被自动转换成数值1,因此结果都是true。
undefined和null
undefined和null与其他类型的值比较时,结果都为false,它们互相比较时结果为true。
相等运算符的缺点
相等运算符隐藏的类型转换,会带来一些违反直觉的结果。
布尔运算符
取反运算符形式上是一个感叹号,用于将布尔值变为相反值。
以下六个值取反后为true:
且运算符(&&)
如果第一个运算子的布尔值为true,则返回第二个运算子的值(注意是值,不是布尔值);如果第一个运算子的布尔值为false,则直接返回第一个运算子的值,且不再对第二个运算子求值。
且运算符可以多个连用,这时返回第一个布尔值为false的表达式的值。
或运算符(||)
如果第一个运算子的布尔值为true,则返回第一个运算子的值,且不再对第二个运算子求值;如果第一个运算子的布尔值为false,则返回第二个运算子的值。
或运算符可以多个连用,这时返回第一个布尔值为true的表达式的值。
三元条件运算符( ? :)
三元条件运算符用问号(?)和冒号(:),分隔三个表达式。如果第一个表达式的布尔值为true,则返回第二个表达式的值,否则返回第三个表达式的值。
位运算
http://javascript.ruanyifeng.com/grammar/operator.html#toc14
圆括号运算符
圆括号是一种运算符,它有两种用法:如果把表达式放在圆括号之中,作用是求值;如果跟在函数的后面,作用是调用函数。
对象放在圆括号之中,则会返回对象的值,即对象本身。
void运算符
void运算符的作用是执行一个表达式,然后不返回任何值,或者说返回undefined。
void运算符的优先性很高
逗号运算符
逗号运算符用于对两个表达式求值,并返回后一个表达式的值。
运算顺序
赋值运算符(=)和三元条件运算符(?:)是少数运算符的计算顺序是从右到左。
下表按从最高到最低的优先级列出JavaScript运算符。
运算符
描述
. [] ()
字段访问、数组下标、函数调用以及表达式分组
++ -- - ~ ! delete new typeof void
一元运算符、返回数据类型、对象创建、未定义值
* / %
乘法、除法、取模
+ - +
加法、减法、字符串连接
<< >> >>>
移位
< <= > >= instanceof
小于、小于等于、大于、大于等于、instanceof
== != === !==
等于、不等于、严格相等、非严格相等
&
按位与
^
按位异或
|
按位或
&&
逻辑与
||
逻辑或
?:
条件
= oP=
赋值、运算赋值
,
多重求值
Last updated