对象类型
# 对象类型
JavaScript 的基本数据类型包括 Undefined
、Null
、Boolean
、String
、Number
和 Object
,以及 ES6 新增的 Symbol
类型
对象是一种复合值,它可以将多个原始值或者其他对象聚合在一起,可通过键名访问这些值
# 创建对象
对象字面量
对象字面量是由若干键值对组成的映射表,键值对中间用冒号分隔,整个映射表用花括号括起来
const uzi = { name : 'uzi', age : 22, 5 : true }
1
2
3
4
5构造函数
使用
new
操作符调用 Object 构造函数来初始化一个新创建的对象let uzi = new Object(); uzi.name = 'Uzi'; uzi.age = 22;
1
2
3
4参数为对象
参数为对象
let foo = { a: 1 } let bar = new Object(foo) console.log(foo === bar) // true
1
2
3
4
5
6参数为函数(对象)
let foo = function(){} let bar = new Object(foo) console.log(foo === bar) // true
1
2
3
4
5
6
参数为原始类型
如果参数是一个原始类型的值,则返回该值对应的包装对象
console.log(new Object('foo')) // String {0: "f", 1: "o", 2: "o", length: 3, [[PrimitiveValue]]: "foo"} console.log(new Object(1)) // Number {[[PrimitiveValue]]: 1} console.log(new Object(true)) // Boolean {[[PrimitiveValue]]: true}
1
2
3
4
5
6
7
8
Object.create()
用于创建指定对象为原型对象的新对象
Object.create(proto, properties)
1proto 新创建对象指向的原型对象 object
const object = Object.create({ x:1, y:1 }) // object 继承了属性 x 和 y console.log(object.x); // 1
1
2
3
4
5properties 选参数。添加到新创建对象的可枚举属性(即自身定义的属性,而不是原型链上的枚举属性 object
const obj = Object.create({ z:3 }, { x:{ value:1, writable: false, enumerable:true, configurable:true }, y:{ value:2, writable: false, enumerable:true, configurable:true } }) console.log(obj.x, obj.y, obj.z); // 1 2 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 对象组成
对象是属性的无序集合,由 键名 和 属性值 组成
# 键名
对象的所有键名都是字符串,所以加不加引号都可以,如果不是字符串也会自动转换成字符串
# 属性值
属性值可以是任何类型的表达式,最终表达式的结果就是属性值的结果
如果属性值为函数,则通常把这个属性称为"方法"
const foo = {
run: function (x) {
return 2 * x;
}
}
foo.run(1);
// 2
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 引用对象
如果不同的变量名指向同一个对象,那么它们都是这个对象的引用,也就是说指向同一个内存地址。修改其中一个变量,会影响到其他所有变量
let foo = {};
let bar = foo;
foo.a = 1;
console.log(bar.a);
// 1
bar.b = 2;
console.log(foo.b);
// 2
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
如果取消某一个变量对于原对象的引用,不会影响到另一个变量
let foo = {};
let bar = foo;
foo = 1;
console.log(bar);
// {}
1
2
3
4
5
6
2
3
4
5
6
上次更新: 2024/08/14, 04:14:33