一、创建对象的三种方法
1、利用字面量创建对象
const/var/let 对象名 ={
属性名1 : 属性值1,
属性名2 : 属性值2,
属性名n : 属性值n,
}
const obj = { uname: 'John', age: 20 }
2、利用 new Object()创建对象
var obj = new Object({
属性名1 : 属性值1,
属性名2 : 属性值2,
属性名n : 属性值n,});
const obj = new Object({ uname: 'John', age: 20 })
3、利用构造函数创建对象
function 构造函数名() {
this.属性1 = 值1;
this.属性2 = 值3;
this.属性n = 值n;
this.方法 = function() {
}
}
// 定义学生构造函数
function Student() {
// 添加属性
this.school = '北大'
this.age = 18
}
二、构造函数
1、什么是构造函数
- 创建一个构造函数,专门用来创建一个指定的对象的
- 构造函数就是普通的函数,创建方式和普通函数没有区别,不同的是构造函数习惯上首字母大写
- 构造函数和普通函数的区别就是调用方式不同。普通函数是直接调用的,而构造函数需要使用
new
关键字来调用
2、构造函数执行流程
- 立刻创建一个对象
- 将新建的对象设置为函数中
this
,在构造函数中可以使用this
来引用新建的对象- 遂行执行函数中的代码
- 将新建的对象作为返回值返回
内置内构函数:Array、Date、Object
3、构造函数返回值
1) 没有return,默认返回this
2) return 基本数据类型,最终返回this
3) return 复杂数据类型(对象),返回该that对象,this对象被丢失
4、构造函数的实例成员与静态成员
// 实例(对象) new出来的对象叫实例对象 new过程即实例化对象过程
// 实例成员指的是new出来的对象中的属性或方法
function Student(age) {
// 添加属性 this===创建出来的对象
this.school = '北大'
this.age = age
this.sayHi = function () {
console.log('sayHi')
}
}
// school age sayHi 都叫实例成员
const s1 = new Student(19)
console.log(s1.school)
// 静态成员 通过构造函数.属性 = 值
// 通过构造函数.属性去访问
Student.nation = 'china'
console.log(Student.nation)
5、Object静态方法
静态方法就是直接使用类名调用的方法
<script>
// 构造函数
function student(name,age,sex){
this.name=name
this.age=age
this.sex=sex
}
const s1=new student('abc',18,'男')
const s2=new student('bcd',20,'女')
console.log(s1)
console.log(s2)
// 静态成员
student.school='北大'
// 调用实例成员
console.log(s1.age)
// 调用静态成员
console.log(student.school)
// Object 静态方法
// Object.keys 获取对象属性名
const keys=Object.keys(s1)
// Object.values 获取对象属性值
const values=Object.values(s1)
console.log(keys)
console.log(values)
// Object.assign -> ES6新增方法
const o = {}
const o1 = { name: 'longge' }
const o2 = { age: 18 }
// o1 o2 源对象
// assign实现对象的拷贝
const r = Object.assign(o, o1, o2)
console.log(o)
</script>