- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
目录
- 对象简介
- 增
new Object与字面量Object.create - 删除属性
delete - 改
Object.assign - 查
for..inObject.keysObject.valuesObject.entries{}=>[]
一 对象简介
复杂数据类型,无序的数据集合,键值对的集合
注意:
键名是字符串,不是标识符,可以包含任意字符- 引号可省略,省略之后就只能写标识符
就算引号省略了,键名也还是字符串
var obj = {a:1};
var obj1 = new Object({b:2});
var protoObj = {a1:1,a2:2};
var obj2 = Object.create(protoObj);
obj2.__proto__; // {a1: 1, a2: 2}
obj2.prototype; // undefined
1) 用变量a的值作为属性名
1.1) 属性名 加 [] 会当做变量求值
var a = {b:1}; // 属性为对象
var a1 = 1+1; // 属性为数字
var a2 = '1+1';// 属性为字符串
var obj = {
[a]: 1,
[a1]: 'a1 value',
[a2]: 'a2 value'
};
console.log(obj);
// {2: 'a1 value', [object Object]: 1, 1+1: 'a2 value'}
1.2) 属性名 不加 []
var a = {b:1}; // 属性为对象
var a1 = 1+1; // 属性为数字
var a2 = '1+1';// 属性为字符串
var obj = {
a: 1,
a1: 'a1 value',
a2: 'a2 value'
};
console.log(obj);
// {a: 1, a1: 'a1 value', a2: 'a2 value'}
二 增 new Object 与 字面量 Object.create
var obj = {a:1};
var obj1 = new Object({b:2});
var protoObj = {a1:1,a2:2};
var obj2 = Object.create(protoObj);
obj2.__proto__; // {a1: 1, a2: 2}
obj2.prototype; // undefined
三 删除属性 delete
var obj = {
a: 0,
a1: 1,
a2: 2'
};
delete obj.a; // 返回 true
console.log(obj); // {a1: 'a1 value', a2: 'a2 value'}
delete obj["a1"] // 返回 true
console.log(obj); // {a2: 'a2 value'}
四 改 Object.assign
1) 单个 修改,增加属性
var obj={a:1};
obj['b']=2;
obj.c=3;
obj.c=36;
// {a: 1, b: 2, c: 36}
2) 批量 新增,修改 Object.assign
后者覆盖前者的属性 value
var obj = {a:1,a1:11}
Object.assign(obj,{a:'new',b:2,c:3})
// {a: 'new', a1: 11, b: 2, c: 3}
"a1" in obj; // true
3) 判断一个属性是自身的还是共有的
var obj={a:1};
obj.hasOwnProperty('toString'); // false
五 查 for..in Object.keys Object.values Object.entries {}=>[]
1) Object.keys(obj) {} => []
查看自身所有属性
var obj = {
a: 0,
a1: 1,
a2: 2
};
Object.keys(obj);
// ['a', 'a1', 'a2']
2) Object.values(obj) {} => []
查看所有值
var obj = {
a: 0,
a1: 1,
a2: 2
};
Object.values(obj);
// [0, 1, 2]
3) Object.entries(obj) {} => []
查看所有键值对
var obj = {
a: 0,
a1: 1,
a2: 2
};
Object.entries(obj);
// [['a', 0],['a1', 1],['a2', 2]]
4) console.dir(obj) {} => []
打印自身和公有属性
var obj = {
a: 0,
a1: 1,
a2: 2
};
console.dir(obj)
总结
- 对象的属性名
加 []会当做变量求值