ECMA-262 把对象(object)定义为“属性的无序集合,每个属性存放一个原始值、对象或函数”。严格来说,这意味着对象是无特定顺序的值的数组。对象的每个属性或方法都由一个名称来标识,某个名称映射到一个值。
JS 红宝书(JavaScript高级程序设计)中把对象想象成一张散列表,其中的女童就是一组名/值对,值可以是数据或者函数。
学习过Java面向对象可能会把JS的对象类比成Java中的类,但JS的对象就是Java的对象。只不过Java中对象需要由类实例化得到,而JS的对象可以直接实例化,JS对象的构造函数会更像Java里面的类。
JS对象有三种创建方法:
1.利用对象字面量:用{}创建对象
var obj = {
name: '张三',
age: 18,
sleep: function () {
console.log('睡觉');
}
}
对象字面量:就是大括号{}里面包含对象的属性和方法,使用键值对的形式表示,不同的属性和方法之间只用逗号分隔。这也是比较流行的用法。
键:属性名
值:属性值(数字型,布尔型,字符串型,函数)
对象的使用方法
1)采取 对象名.属性名
console.log(obj.name);
2)对象名[‘属性名’]
console.log(obj['age']);
3)调用方法 对象名.方法名()
obj.sleep();
2.利用 new Object() 创建对象
var obj = new Object();
obj.uname = '张三';
obj.age=18;
obj.sleep = function(){
console.log('睡觉');
}
这种方法是创建Object的一个新实例,利用等号赋值的方式添加属性和方法,属性与方法之间用分号隔开。
对象的使用方法与第一种完全相同。
3.使用构造函数创建对象
function Animal(name,age){
this.name = name;
this.age = age;
this.eat = function(food){
console.log(this.name+'爱吃'+food);
}
}
var cat = new Animal('小猫',5);
使用构造函数看上去比前两种创建对象的方法要复杂一些,但是构造函数能让我们同时创建多个具有相同属性和方法的对象。利用函数的方法重复创建具有相同属性和方法对象,把这个函数称为构造函数,构造函数就是把对象里面一些相同的属性和方法抽象出来封装到函数里面。
this表示当前对象,通过将形参赋值给当前对象的属性完成对象的创建。
//创建一个小猫对象
var cat = new Animal('小猫',5);
//创建一个小狗对象
var dog = new Animal('小狗',8);
//创建一个小鱼对象
var fish = new Animal('小鱼',2);
//创建一个小虾对象
var shrimp = new Animal('小虾',1);
使用构造函数有一些注意事项:
1.构造函数的首字母大写
2.构造函数不需要 return 就可以返回结果
3.调用构造函数必须使用 new
4.只要 new 函数名() 调用函数就创建了一个对象
对象的使用方法
使用方法与第一种方法相同:
//1)采取 对象名.属性名
console.log(cat.name);
//2)对象名['属性名']
console.log(cat['age']);
// 3)调用方法 对象名.方法名()
cat.eat('小鱼');
额外:遍历对象
使用 for in 遍历对象: for( 变量 in 对象){ }
for (var key in cat) {
console.log(key); //key 输出得到属性名
console.log(cat[key]); //cat[key] 输出得到属性值
}