JavaScript运算符优先级
运算符的优先级,依次降低
运算符 | 含义 |
---|---|
. [] () | 提取属性与调用函数 |
delete new typeof + - ! | 一元运算符 |
* / % | 乘法、除法、求余 |
+ - | 加法/连接、减法 |
>= <= > < | 不等式运算符 |
=== !== | 等式运算符 |
&& | 逻辑与 |
|| | 逻辑或 |
?: | 三元 |
对象
对象字面量
对象字面量中,如果属性名是一个合法的JavaScript标识符且不是保留字,则不强制要求用引号括住。
var stooge = {
"first-name": "Joe" //必须括住
number: 100 //可选括住
}
检索属性值
检索对象里包含的值,采用[]的方式,如果属性名是合法的JavaScript标识符且不是保留字,则优先考虑使用 . 表示法
stooge["first-name"]
flight.departure.IATA
对象引用
对象通过引用来传递,永远不会被复制,指向同一个对象
var x = stooge
x.nickname = 'curly'
var nick = stooge.nickname // nick === x.nickname
原型
JavaScript中,每个对象都连接到一个原型,并且可以从中继承属性。所有通过字面量创建的对象都能连接到Object.prototype,它是JavaScript中的标配对象。
var obj = Object.create(superObj) //obj是一个原型为superObj的对象
枚举属性
使用
for...in
来遍历一个对象中所有的属性名,使用hasOwnProperty
方法过滤掉原型链中的属性
var name
for(name in stooge){
if(stooge.hasOwnProperty(name)){
}
}
通过
for..in
遍历的属性顺序是不确定的,因此一般对处理成数组并加以使用。
删除
delete运算符可以用来删除对象的属性,如果对象包含属性,则该属性被移除,它不会触及到原型链中的对象
var obj ={
name: 'Joe'
}
delete obj.name
函数调用
函数调用的模式有4种:方法调用模式、函数调用模式、构造函数调用模式、apply调用模式,调用模式不同,this也不同
- 方法调用模式:this指向调用方法的对象
- 函数调用模式:this指向全局的方法
- 构造器调用模式:this指向new的对象
- apply调用模式:this指向第一个参数,如果第一个参数为null,则指向全局