Day 08 JavaScript 笔记
1 Object 对象
1.1 什么是 Object
- Object 是值的无序集合。
- Object 由属性组成,属性有属性名和属性值。
- 属性的值可以是任意类型的数据。属性值如果是function 类型的数据,这种属性可以成为方法。
1.2 如何声明 Object 对象
① 第一种 直接量方式
// 创建一个空的的对象
var obj1 = {};
// 创建一个带有属性的 object 类型的数据
var obj2 = {
name: '芳芳',
age: 18,
getInfo: function() {
console.log('get info 函数');
},
users: [100, 200, 300, 400],
'address': '上海',
'user-info': 'hello'
};
**注意:**属性名的形式是字符串,属性名的格式没有任何要求;如果属性名满足标识符的命名规范(变量的命名规范),可以省略引号。
② 使用 Object 函数
var obj = Object();
③ 使用 Object 构造函数
var obj = new Object();
1.3 Object 对象属性的读写
① 语法
// 点语法
obj.属性名;
obj.属性名 = 值;
// [] 语法
obj['属性名'];
obj['属性名']();
② 什么情况下必须使用[] 语法读写属性
1、属性名不满足标识符命名规范
2、使用变量表示属性名
1.4 遍历对象属性
// for in 遍历 Object 所有的属性
for (var prop in obj) {
console.log(prop, obj[prop]);
}
1.5 删除对象中的属性
使用delete 运算符,删除对象中的属性。
delete 对象.属性名;
delete 对象["属性名"];
1.6 判断对象中是否存在某个属性
使用 in 运算符,这是 二元运算符,组成的表达式返回布尔值。
"属性名" in 对象
2 构造函数
2.1 什么是构造函数
JS 中的构造函数相当于其他编程语言中的类。
构造函数用于产生创造一个对象。
相同数据类型的对象,构造函数必定是一致的。数据类型等价于构造函数。
2.2 构造函数和对象的关系
构造函数是对象的抽象(描述),对象是构造函数的实例。
一个构造函数可以对应多个对象,一个对象只能有一个构造函数。
2.3 判断对象的构造函数
① 运算符 instanceof
判断一个对象是否是某个构造函数的实例,这是一个二元运算符,所组成的表达式的值是布尔值。
对象 instanceof 构造函数;
② constructor 属性
所有的对象都具有 constructor 属性,通过该属性可以得到对象的构造函数。
对象.constructor
2.4 自定义构造函数
// 自定义构造函数
function User(username, pwd, address) {
// 给对象设置属性
this.username = username;
this.pwd = pwd
this.address = address;
// 给对象设置方法
this.getInfo = function() {
console.log('我叫' + this.username + ',我的密码是' + this.pwd + ',我的地址是' + this.address);
};
}
构造函数特点:
1、函数还是构造函数取决于怎么去用,如果实例化就是构造函数,调用就是函数。
2、实例化构造函数的时候,函数中的语句都会被执行到。
3、构造函数中的return 语句对实例化结果的影响:① 如果构造函数没有返回值,或者返回原始类型的数据,对实例化结果毫无影响。② 如果构造函数返回一个对象类型的数据,实例化的结果就是该返回值。
2.5 实例化
使用 new 关键字实例化构造函数,可以创建出该构造函数的实例(对象)
new 构造函数()
3 this
3.1 this 的含义
1、this是JS 内置的一个变量,本质上是一个对象。
2、通常在函数或方法中使用,代表这个函数的调用者。
3.2 this 的指向
this 的指向就是this 的值,this在不同的地方使用,this 的指向是不同的。
this 的指向分为两种情况:
1 在构造函数中使用this : this 指向构造函数的实例。
2在方法(函数)中使用this : 谁调用了该方法,this 指向谁。
3.3 window 介绍
- JS 中有一个全局对象,运行在浏览器上的JS ,全局对象是window。
- 全局变量(包括全局函数)其实本质上是全局对象的属性(或方法)。
- 使用全局对象的属性或方法,可以省略window。