object 对象

无序

1
let a = {};

attribute 属性

1
2
3
4
5
6
7
8
9
let a = {
name: 'Andy',
age: 18
};

a.name;

a['name'];
a['sex'];

method 方法

1
2
3
4
5
6
7
8
9
10
11
12
13
let a = {
name: 'Andy',
age: 18,
sayHi: function() {
console.log('Hi!');
},
sayHello: function() {
console.log('Hello!');
}
};

a.sayHi();
a.sayHello();

新增属性或方法

1
2
3
4
5
6
7
8
9
let a = {
name: 'Andy'
};

a.age = 18; // 新增了一个属性 age

a.sayHello = function() { // 新增了一个属性 sayHello
console.log('Hello!');
}

删除对象的属性

1
2
3
4
5
6
let a = {
name: 'Andy',
age: 18
};

delete obj.name; // 删除 name 属性

for in

for…in 语句以任意顺序迭代一个对象的除Symbol以外的可枚举属性,包括继承的可枚举属性。

1
2
3
4
for (k in obj) {
// k 是对象的属性、方法名,string类型
obj[k];
}

for in 最好不要用来遍历数组,其获得的k变量是string类型

属性操作

删除属性

1
delete person.age

Object.defineProperty 添加属性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Object.defineProperty(person, 'prop1', {
value: 18,
enumerable: true, // 控制属性 是否可以枚举,省略默认 false
writeble: true, // 控制属性 是否可以被修改,省略默认 false
configurable: true // 控制属性 是否可以被删除,省略默认 false

get:function(){ // 属性被读取时,get函数(getter)会被调用,返回值被调用
return 'hello'
}

set(value){ // 属性被修改时,函数被执行,收到被修改后的值value
n = value
console.log(value)
}
})