Day08 JavaScript 课堂案例
1 回顾
1. Object 对象的概念
Object 对象是值的无序集合
Object 对象由属性组成,属性由属性名和属性值组成,属性名用字符串表示,属性值可以是任意类型的数据
2. 创建 Object 对象
① 直接量方式 {}
② Object 函数
③ Object 构造函数
3. 对象属性的读写
.
[]
4. 遍历对象的属性
for in
5. 删除对象的属性
delete 运算符
6. 判断对象中是否存在某个属性
in 运算符
2 构造函数
2.1 什么是构造函数?
1. 构造函数相当于其他编程语言中的类(class)
2. 构造函数用于构造对象。
3. 构造函数等价于数据类型,数据类型相同的对象,构造函数也相同。
2.2 构造函数和对象的关系
1. 构造函数是对象的抽象(描述),对象是构造函数的实例。
2. 一共构造函数可以创建无数个对象,一个对象只有一个构造函数。
2.3 判断对象的构造函数
① 运算符 instanceof
对象 instanceof 构造函数;
1. instanceof 是一个二元运算符,第一个操作数写个对象,第二个操作数写个构造函数
2. instanceof 所组成的表达式的值是布尔值
3. 可用来判断对象是否是某种类型的数据
② constructor 属性
对象.constructor;
该属性的值就是对象的构造函数!
2.4 自定义构造函数
// 自定义构造函数
function User(name, age, address) {
// 给构造函数的实例添加属性
this.name = name;
this.age = age;
this.address = address;
// 给构造函数的实例添加方法
this.getInfo = function() {
console.log('getInfo:', this.name, this.age, this.address);
};
}
1. 在构造函数内部,可以使用 this 表示构造函数构造出来的实例(对象), 通过 this 给实例设置属性和方法
2. 构造函数如果没有返回值或者返回原始类型数据,对实例化的结果没有影响(会创建一个新的对象)
构造函数如果返回一个对象类型的数据,实例化的结构就是返回值
3. 建议构造函数名的首字母大写
2.5 实例化
new 构造函数名();
new 构造函数名; // 如果构造函数没有参数,可以省略小括号
1. 根据构造函数创建对象的过程,称为实例化; 使用关键字 new 可以对构造函数进行实例化
2. 没实例化化一次构造函数,就创建一个新的对象。
3. [] 等价于 new Array(); {} 等价于 new Object()
2.6 构造函数和函数
1. 构造函数就是函数
2. 一个函数是普通函数还是构造函数取决于怎么使用,如果调用就是普通函数,如果实例化就是构造函数
2.7 原始类型的数据的对象特性
1. 原始类型的数据(number、string、boolean) 具有两种形态,值的形态和对象的形态,两种形态可以自动转换。
2. 一个值,如果当做对象去使用,临时创建一个对象,所有的操作基于该临时对象,执行完毕后,临时对象会销毁。
3. 对象类型的数据(array、object、function、自定义类型),只有对象形态
4. null 和 undefined 没有对象形态,不算对象。
3 this
3.1 this 的含义
1. this 是系统定义好的变量,值是提前设置好的。
2. 一般在构造函数或者函数中使用。
3.2 this 的指向
在构造函数中使用 this : this 指向构造函数构造出来的实例(对象)。
在函数(方法)中使用 this: this 指向调用该函数(方法)的对象。
3.3 window 介绍
1. window 是浏览器端 JS 中的全局对象。
2. 所有的全局变量本质上是 window 的属性或方法。
3. 使用 window的属性和方法可以省略 window.