在Javascript中,对象是一组无序的相关属性和方法的集合,例如:字符串、数值、数组、函数等。
对象是有属性和方法组成
属性:事物的特征
方法:事物的行为
字面量创建对象:{ } 里面包含了表达这个对象的属性和方法
// 利用对象字面量创建对象 {}
var obj = {
uname: '小明',
age: 18,
sayHi: function() {
console.log('hi~');
}
};
// (1) 里面的属性或者方法我们采用键值对的形式 键 属性名: 值 属性值
// (2) 多个属性或者方法中间用逗号隔开的
// (3)方法冒号后面跟的是一个匿名函数
// 使用对象
// (1)调用对象的属性 我们采用 对象名.属性名
console.log(obj.uname);
// (2)调用对象的属性还有一种方法,对象名['属性名']
console.log(obj['age']);
// (3)调用对象的方法 sayHi 对象名.方法名
obj.sayHi();
new object创建对象:
// new Object创建对象
var obj = new Object(); // 创建了一个空对象
obj.uname = '小明';
obj.age = 18;
obj.sayHi = function() {
console.log('hi~');
}
// (1) 我们是利用 等号 = 赋值的方法 添加对象的属性 和 方法
// (2) 每个属性和方法之间 分号结束
console.log(obj.uname);
console.log(obj['sex']);
obj.sayHi();
构造函数中封装的是对象,不是普通代码,把对象中相同的属性和方法抽象出来封装到函数中。
利用构造函数创建对象,前两种一次只能创建一个对象。
// 构造函数 语法格式
// function 构造函数(){
// this.属性 = 值;
// this.方法 = function(){};
// }
// new 构造函数名();
// 1、构造函数 Star 明星 泛指的某一大类
function Star(uname, age, sex) {
this.name = uname;
this.age = age;
this.sex = sex;
this.sing = function(sang) {
console.log(sang);
}
}
// 2、对象 一个具体对象,刘德华=={name:'刘德华', age:18, sex:'男',sing:f}
var ldh = new Star('刘德华', 18, '男'); // 调用是一个函数,返回的是一个对象
var zxy = new Star('张学友', 19, '男');
// 对象类型
console.log(typeof ldh);
// 利用构造函数创建对象的过程,也称为对象的实例化
console.log(ldh.name);
console.log(ldh['sex']);
ldh.sing('冰雨');
// 1、构造函数首字母需要大写
// 2、构造函数不需要return,就可以返回结果。
// 3、我们调用构造函数 必须使用 new
// 4、我们只要 new Star() 调用函数就创建一个对象 ldh()
new关键字
- 在内存中创建一个新的空对象。
- 让this指向这个新的空对象。
- 执行构造函数里面的代码,给这个新对象添加属性和方法。
- 返回这个新对象。(所以构造函数中不需要return)。
例
- new Array()创建一个数组对象
- new object()创建一个对象实例
- new Date()创建一个日期对象
.。。。
遍历对象
// 遍历对象
var obj = {
name:'大头',
age:18,
fn:function(){}
}
// for(变量 in 对象){ }
for(var k in obj){
console.log(k); // k 变量 输出得到的是 属性名
console.log(obj[k]); // obj[k] 得到的是 属性值
}
小结
- 对象可以让代码结构更清晰
- 对象属于复杂数据类型object
- 本质:对象就是一组无序的相关属性和方法的集合。
- 构造函数泛指某一大类,比如明星,刘德华,张学友都统称为明星
- 对象实例特指一个事物,比如这个刘德华
- for…in语句用于对对象的属性进行循环操作。