obj.属性名的实质
JavaScript对象
- 内置对象(JavaScript自带对象)如:Math Date String Array Object
- 自定义对象
- 浏览器对象
例如:var obj = {
name : jack;
}
这里的obj.name = obj['name']
实质上在obj.name在经过编译器审查的时候就会执行如上操作
还有利用字符串连接的变异操作obj['name' + num]
对象遍历
for(var prop in obj){
console.log(prop);
}
遍历出属性名
for(var prop in obj){
console.log(obj.prop);
}
遍历出undefined 因为obj.prop 被当成某一个obj属性了
for(var prop in obj){
console.log(obj[prop]);
}
遍历出对象
该方法会连同拿出原型属性都拿出来,但是当编译器寻找到原型链顶端就会终止这一过程,即不能拿出object.prototype
for(var prop in obj){
if(! obj.hasOwnProperty(prop)){
console.log(obj[prop]);
}
}
hasOwnProperty()针对是否属于自身属性做判断并返回布尔值
上述进化版遍历能实现只把一个对象自己的属性遍历出来
属性一定是字符串形式,否则会被当成对象
in操作符 : “属性名” in 对象
返回布尔值,判断对象能否操作该属性
A instanceof B
判断B是否是A的构造函数构造而出
看A对象的原型链上有无B的原型
判断对象/数组
- 通过constructor
- instanceof
- Object.prototype.toString.call()
实例对象和实例方法
通过构造函数创建出来,实例化的对象,实例方法通过实例对象调用
静态对象和静态方法
不需要创建,直接就是一个对象,静态方法直接通过这个对象的名字调用