■ 关于对象
万物皆对象,对象是一个具体的事物,看得见摸得着的实物
JS中,对象是一组无序的相关属性和方法的集合
所有的事物都是对象,例如字符串,数值,数组,函数等
对象包含属性和方法
属性: 事物的特征,在对象中用属性来表示,常用名词
方法: 事物的行为,在对象中用方法来表示,常用动词
□ 变量和属性
- 相同点: 都是用来存储数据的
- 不同点:
变量: 单独声明并赋值,使用时直接写变量名,单独存在
属性: 在对象里不需要声明,使用时必须要通过"对象.属性"的方式、
var num = 10;
var obj = {
age: 18 //没有使用var
}
□ 函数和方法
- 相同点: 都是实现某种功能
- 不同点:
函数: 函数是单独声明并调用的,使用时通过"函数名()",单独存在
方法: 在对象里面,使用时必须要通过"对象.方法名()"的方式
■ 对象的作用
保存一个值,可以使用变量
保存多个值(一组值),可以使用数组
保存多个方面的信息,可以使用对象,比如一个人的各种信息
因此,JS对象的表达结构更清晰,更强大
■ 对象的创建
□ 利用字面量
就是花括号{}里面包含了表达这个具体事物(对象)的属性和方法
里面的属性和方法采用键值对的形式,键就是属性名, 值就是属性值
键和值用冒号“”":“分隔,多个属性和方法用逗号”,"分隔
方法冒号后,跟着一个匿名函数
var obj = {}; //创建了一个空对象
var obj1 = { //创建了一个包含属性name,age,sex和sayHi方法的对象
name: 'Tom',
age: 18,
sex: 'female',
sayHi: function(){
console.log('Hi');
}
}
□ new Object
通过等号赋值的方式添加对象的属性和方法
每个属性和方法之间用分号分隔
var obj = new Object(); //创建一个空对象
obj.name = 'Tom';
obj.age = 19;
obj.sex = 'female';
obj.sayHi = function(){
console.log('Hi');
}
□ 构造函数
利用字面量和new Object这两种两种方式一次只能创建一个对象
对象里面的很多属性和方法是相同的,但创建时只能一个一个复制粘贴,很费时费力
利用构造函数的方法,就可以重复利用这些相同的代码
构造函数就是把对象里面一些相同的属性和方法抽象出来封装到函数里面
构造函数是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值
它总与new运算符一起使用
可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里
构造函数的语法格式:
function 构造函数名(){
this.属性 = 值;
this.方法 = function(){
}
}
var obj = new 构造函数名();
function SingStar(name,sex,age){
this.name = name;
this.sex = sex;
this.age = age;
this.sing = function(song){
console.log(song);
}
}
var singStar1 = new SingStar('刘德华','男','20');
console.log(typeof singStar1); //输出:object
console.log(singStar1.name); //输出:刘德华
console.log(singStar1['sex']); //输出:男
console.log(singStar1.age); //输出:20
singStar1.sing('笨小孩');
构造函数说明:
- 构造函数名的首字母要大写
- 构造函数不需要return即可返回结果
- 调用构造函数,必须要使用new
- 只要执行"new 构造函数()",就会创建一个对象
- 属性和方法前,必须要使用this
构造函数特指某一类,对象特指某一个
通过构造函数的方式创建对象的过程,也称为对象实例化
□ new关键字
执行过程:
- 在内存中创建一个空对象
- 让this指向该空对象
- 执行构造函数里的代码,给该空对象添加属性和方法
- 返回这个对象,相当于return,因此构造方法不需要return
■ 对象的使用
语法:
对象名.属性名
对象名['属性名'] (必须要加引号)
对象名.方法名 (不要忘记小括号)
var obj1 = { //创建了一个包含属性name,age,sex和sayHi方法的对象
name: 'Tom',
age: 18,
sex: 'femal',
sayHi: function(){
console.log('Hi');
}
}
console.log(obj1.name);
console.log(obj1['age']);
obj1.sayHi();
■ 遍历对象
for…in语句,用于对数组或对象的属性进行循环操作
一般来讲,通过for in遍历对象时,使用k或key
通常遍历属性,很少遍历方法
语法:
for (变量 in 对象){
//遍历处理
}
var obj = new Object(); //创建一个空对象
obj.name = 'Tom';
obj.age = 19;
obj.sex = 'female';
obj.sayHi = function(){
console.log('Hi');
}
for(var k in obj){
console.log(k); //输出:属性名,name,age,sex
console.log(obj[k]); //输出:属性值,Tom,19,female
}