1.null被认为是一个空的对象引用。。如果定义的变量准备将来用保存对象,最好将该变量初始化null.即 var x=null;这样只有检查null值就可以知道这个变量是否已经保存了一个对象。。
2.object的每个实例都有下列属性和方法
(1)constructor:保存着用于创建当前对象的函数。
(2)hasOwnProperty(propertyName):用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中,作为参数的属性名(propertyName)必须以字符串形式指定(例如o.hasOnwProperty("name"))
(3)isPrototypeOf(object):用于检查传入的对象是否是 传入对象的原型
3.var声明的变量是无法通过delete删除的
函数声明语句创建的变量也是无法删除的
4.属性赋值操作首先检查原型链,以判定是否允许赋值操作。例如:如果o继承自一个只读属性X,那么赋值操作是不允许的。如果允许属性赋值操作,它也总是在原始对象上创建属性或对已有的属性赋值,而不会去修改原型链。设置属性与继承无关。
5原型链:假设要查询对象O的属性X,如果O中不存在X,那么会继续在O的原型对象中查询属性X。如果原型对象中没有属性X,但这个原型对象也有原型,那么继续在这个原型对象的原型上执行查询,知道找到X或者查找到一个原型是null的对象为止。对象的原型属性构成一个链,通过这个链可以实现属性的继承
6.对象的hasOwnProperty()方法用来检测给定的名字是否是对象的自有属性。对于继承熟悉它将返回false
7.除了使用in运算符,还可以使用!==判断一个属性是否是undefined
var o={x:1}
o.x==undefined; //true:o中有x属性
o.y==undefined; //false:o中没有y属性
o.toString!==undefined; //true:o继承了toString属性