- 可以使用for/in来列举JavaScript对象的所有用户定义的属性,但不能列举某些预定义的属性和方法
- 可以使用in运算符来测试一个属性的存在性: if("x" in o) o.x = 1;
也可以 if (o.x!==undefined) o.x = 1; 但是一个属性也可能是存在但未定义的,例如 o.x = undefined - 使用.和使用[]来读取属性是区别的:使用.时,属性名必须是固定的标识符,而不能是运行时计算;使用[]时,属性名是一个字符串,可以在运行时计算得到。
1. constructor属性
?
每个JavaScript对象都有一个constructor属性,它引用了初始化这个对象的构造函数,例如:
var d = new Date(); d.constructor == Date;
一个自定义的instanceof实现:
if((typeof o == "object") && (o.constructor == Date)){ ... }
??