什么是对象?
对象是属性和方法的集合,每个属性都有名字和值(键值对)
怎么创建对象
- 通过字面量的方式去创建对象
let obj = {
// 大括号内写键值对
name:'张三'
}
console.log(obj) // Object { name: "张三" }
- 使用new创建一个对象
let obj = new Object()
obj.name = '张三'
console.log(obj) // Object { name: "张三" }
- 使用构造函数创建对象,需要
new
一下,属性和方法赋给了this
对象,可以使用instanceof
函数检测对象
function Person(name,sex) {
this.name = name
this.sex = sex
}
let obj = new Person('张三','男')
console.log(obj); // Object { name: "张三", sex: "男" }
- 使用工厂模式创建对象,需要
return
出我们在函数中的定义的对象
function Person(name,sex) {
let obj = new Object()
obj.name = name
obj.sex = sex
return obj
}
let obj = Person('张三','男')
console.log(obj); // Object { name: "张三", sex: "男" }
- 使用原型去创建对象
prototype
,如果实例化对象没有这个属性,就会去原型寻找
function Person() {}
Person.prototype.name = '张三' // 在原型上定义 name 和 sex 属性
Person.prototype.sex = '男'
let obj = new Person() // 实例化出对象
console.log(obj.name,obj.sex); // 在实例化对象找不到name和sex属性,就去原型中找name和sex属性
对象的属性如何访问?
- 在实例化对象后加
.
加属性名,属性名不能是变量,
let obj = {
name:'张三',
}
let replace = 'name'
console.log(obj.replace); // undefined
- 在实例化对象后加
[ ]
,括号内加属性名,这里可以用变量
let obj = {
name:'张三',
}
let replace = 'name'
console.log(obj[replace]); // 张三
console.log(obj[name]); // undefined 因为name是个空字符,这里name要用单引号包起来
// console.log(obj['']); // undefined
怎么用变量做对象属性的键
let replace = 'name'
let obj = {
replace: '张三',
[replace]: '张三', // 变量加上 [] 就可以了, 现在 [replace] == name
}
console.log(obj); // Object { replace: "张三", name: "张三" }