JavaScript对象
1.什么是对象
在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象。
对象是由属性和方法组成的。
- 属性:事物的特征,在对象中用属性来表示。(常用名词)
- 方法:事物的行为,在对象中用方法来表示。(常用动词)
2.创建对象的三种方式
- 利用字面量创建对象
- 利用new Object创建对象
- 利用构造函数创建对象
2.1、利用对象字面量创建对象 {}
//varobj = {} //创建了一个空的对象
var obj = {
name:'张三',
age:20,
sex:'男',
func: function(){
console.log('hei~');
}
}
注意:
(1)里面的属性或者方法我们采取键值对的形式 键 属性名 : 值 属性值。
(2)多个属性或者方法中间用逗号隔开的。
(3)方法冒号后面跟的是一个匿名函数。
2、使用对象
(1)调用对象的属性 我们采取 对象名.属性名。
console.log(obj.name);
(2)调用属性还有一种方法 对象名[‘属性名’]。
console.log(obj['age']);
(3)调用对象的方法 func 对象名.方法名() 千万别忘记加小括号。
obj.func();
2.2利用new Object创建对象
var obj = new Object(); //创建一个空的对象
obj.name = '张三';
obj.age = 19;
obj.sex = '男';
obj.func = function(){
console.log('hei~');
}
console.log(obj.name);
console.log(obj['sex']);
obj.func();
注意:
(1)我们是利用 等号 = 赋值的方法 添加对象的属性和方法
(2)每个属性和方法之间用 ; 分号结束
2.3利用构造函数创建对象
(1)我们为什么需要使用构造函数?
------就是因为前面两种创建对象的方式一次只能创建一个对象。
- 因为我们一次创建一个对象,里面很多的属性和方法是大量相同的,我们只能复制。
- 因此我们可以利用函数的方法,重复这些相同的代码,我们就把这个函数称为构造函数。
- 又因为这个函数不一样,里面 封装的不是普通代码,而是 对象
- 构造函数: 就是把我们对象里面一些相同的属性和方法抽象出来封装到函数里面。
(2)构造函数的语法格式
function 构造函数名(){
this.属性 = 值;
this.方法 = function(){}
}
new 构造函数名();
(举个栗子):
创建四大天王的对象 相同的属性:名字 年龄 性别 相同的方法:唱歌
function Star(uname,age,sex){
this.name = uname;
this.age = age;
this.sex = sex;
this.sing = function(sang){
console.log(sang);
}
}
var ldh = new Star('刘德华',18,'男'); //调用函数返回的是一个对象
console.log(typeof ldh);
console.log(ldh.name);
console.log(ldh.age);
console.log(ldh['sex']);
ldh.sing('冰雨');
var zxy = new Star('张学友',19,'男');
console.log(zxy.name);
console.log(zxy.age);
console.log(zxy['sex']);
zxy.sing('李香兰');
// var lm = new Star('黎明',20,'男');
// console.log(lm.name);
// console.log(lm.age);
// console.log(lm['sex']);
//lm.sing('相逢在雨中');
// var gfc = new Star('郭富城',21,'男');
// console.log(gfc.name);
// console.log(gfc.age);
// console.log(gfc['sex']);
//gfc.sing('望乡');
注意:
1.构造函数名字首字母要大写。
2.我们构造函数不需要return 就可以返回结果。
3.我们调用构造函数 必须使用 new。
4.我们只要new Star() 调用函数就创建一个对象 ldh {}。
5.我们的属性和方法前面必须添加 this。
(3)构造函数和对象
1.构造函数 Star() 明星 泛指的某一大类 类似于Java语言里面的 类(class)
function Star(uname,age,sex){
this.name = uname;
this.age = age;
this.sex = sex;
this.sing = function(sang){
console.log(sang);
}
}
2.对象 new Star() 特指某一个 是一个具体的事物 刘德华 == {name: ‘刘德华’, age: 18, sex: ‘男’, sing: ƒ}
var ldh = new Star('刘德华',18,'男'); //调用函数返回的是一个对象
console.log(ldh);
3.我们利用构造函数创建对象的过程我们也称为对象的实例化。
3.new关键字
new在执行时会做四件事:
1.在内存中创建一个新的空对象。
2.让this指向这个新的对象。
3.执行构造函数里面的代码,给这个新对象添加属性和方法。
4.返回这个新对象(所以构造函数里面不需要return).
4.遍历对象属性(for…in)
遍历对象 for in 遍历我们的对象
for (变量 in 对象){
}
注意:我们使用 for in 里面的变量 我们喜欢写 k 或者 key
for…in语句用于对数组或者对象的属性进行循环操作。
var obj = {
name: 'pink老师',
age: 18,
sex: '男',
fn:function(){}
}
//遍历
for(var k in obj){
console.log(k); // k 变量 输出 得到的是 属性名
console.log(obj[k]); // obj[k] 得到的是 属性值
}
小结:
1、对象可以让代码结构更清晰。
2、对象复杂数据类型object。
3、本质:对象就是一组无序的相关属性和方法的集合。
4、构造函数泛指某一大类。
5、对象实例特指一个事物。
6、for…in语句用于对对象的属性进行循环操作。