1.用"."或“[ ]”获得对象或数组元素时,符号之前的表达式会先计算,如果得到值为null或undefined则会抛出异常,因为这个值没有任何属性
2.当获得对象的属性名非合法标识符(空字符串,标点,保留字)或者属性名是通过表达式动态计算获得必须用"[ ]"获得对象属性
3.如果构建的对象不需要传入任何参数,"( )"是可以省略的,如new Date;
4.加号的操作规则优先考虑字符串连接
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
对象object.属性的查询
1、可以用"."或者"[ ]"获得属性,但是对于属性石关键字的只能选择用“[ ]”来获得。例如book["name"]
2、只有在查询属性时才体会到继承的存在,在设置属性时则和继承无关
3、当一个对象的自属性有setter方法,当这个对象调用setter方法时,只对该对象的属性进行修改,原型链该属性不会修改
4、查询不存在的属性不会报错,返回undefined,但是查询不存在对象的属性就会报错
5、删除属性 delete book.name,而且delete只能删除自有属性,不能删除继承属性
6、判断一个属性是不是在对象中,可以用in/hasOwnProperty,其区别是对于继承属性,in返回true,hasOwnproperty返回false
7、用in/for对对象的属性进行枚举,但是in/for会把继承属性给枚举出来,因此要添加一些过滤条件,例如
for ( p in o){
if (!o.hasOwnProperty(p)){
continue;
}
if (typeof o[p] === "function"){
continue;
}
}
8、属性getter/setter方法的定义
get r() {},
set r(value){}
9、获得对象的class可以用方法classOf(o);