犀牛书第6章对象知识梳理:
1.对象的属性名可以包含空对象
var o = {
' ': 1
}
//o[' '] 1
2.如果对象属性名重复了,后面的会覆盖前面的:
var o = {
x: 1,
x: 2
}
//o.x 2
3.体验一下属性值是getter setter 函数时
var a = {
x: 0,
y: 0,
get r(){
return 5;
},
set r(n){
this.x = n;
}
}
a.r //5
a.r = 6 //会导致a.x=6
//还可以用Object.defineProperty来实现:
var obj = {x: 0}
Object.defineProperty(obj, 'r', {
set: function(v) {
this.x = v;
},
get: function() {
return 5;
}
})
请问这两种区别是什么? 答:使用Object.defineProperty时 属性值可以是个变量
4.. [] 的区别是什么?
下列场景,.做不到:
var addr = '';
for (i = 0; i < 4; i++){
addr +=customer['address'+i]
}
5.检测属性的方法
- 'x' in o
- o.x !== undefined
- o.hasOwnProperty('x')
- o.propertyIsEnumerable('x')