对象

什么是对象?:现实生活中:万物皆对象,对象是一个具体的事物,看得见摸得着的实物。例如,一本书、一辆汽车、一个人、可以是“对象”,一个数据库、一张网页、一个与远程服务器的连接也可以是“对象”。

  1. 在JavaScript中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,例如字符串、数值、数组、函数等。

对象是由属性方法组成的。

属性:事物的特征,在对象中用属性来表示(常用名词)

方法:事物的行为,在对象中用方法来表示(常用动词)

创建对象的三种方式

在JavaScript中,现阶段我们可以采用三种方式创建对象(object):

  • 利用字面量创建对象
  • 利用new Object创建对象
  • 利用构造函数创建对象

1.利用字面量创建对象

对象字面量:就是花括号{} 里面包含了表达这个具体事物(对象)的属性和方法。

利用对象字面量创建对象{}

var obj = {}; // 创建了一个空对象
var obj = {
    uname : '路飞',
    age : 17,
    sex : '男',
    skill : function(){
        console.log('手脚伸长,橡胶机关枪');
    }
}
console.log(obj.uname);
console.log(obj['age']);
obj.skill();

(1) 里面的属性或者方法我们采取键值对的形式 键 属性名 : 值 属性值。如外部样式的写法。

(2)多个属性或者方法中间用逗号隔开的

(3)方法冒号后面跟的是一个匿名函数

2.使用对象

(1)调用对象的属性 我们采取 对象名.属性名 ;. 我们理解为 的

console.log(obj.uname);;

(2)调用属性还有一种方法 对象名['属性名']

console.log(obj['age']);

(3)调用对象的方法 skill 对象名.方法名() 千万别忘记添加小括号

obj.skill();

2.利用new Object创建对象

跟我们前面学的 new Array() 原理一致

var obj = new Object();
obj.uname = '路飞';
obj.age = 17;
obj.sex = '男';
obj.skill = function() {
    console.log('手脚伸长,橡胶机关枪');
}
console.log(obj.uname);
console.log(obj['sex']);
obj.skill();

(1) 我们是利用等号 = 赋值的方法 添加对象的属性和方法

(2) 每个属性和方法之间用 分号结束

3.利用构造函数创建对象

在开始之前,先来个问题,我们为什么需要使用构造函数?:

就是因为我们前面两种创建对象的方式一次只能创建一个对象

因为我们一次创建一个对象,里面很多的属性和方法是大量相同的 我们只能复制

因此我们可以利用函数的方法 重复这些相同的代码 我们就把这个函数称为 构造函数

又因为这个函数不一样,里面封装的不是普通的代码,而是 对象

构造函数 就是把我们对象里面一些相同的属性和方法抽象出来封装到函数里面

利用构造函数创建对象

构造函数:是一种特殊的函数,主要用来初始化对象,即为对象成员变量赋初始值,它总与new运算符一起使用。我们可以把对象中一些公共的属性和方法抽取出来,然后封装到这个函数里面。

构造函数语法结构:

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);
    }
}
new Star('刘德华',20,'男');
var ldh = new Star('刘德华',20,'男'); // 调用函数返回的是一个对象。把值放到一个变量里面去。
console.log(ldh.name);  
console.log(ldh.age);
console.log(ldh.sex);
ldh.sing('冰雨');  // 方法 传参

1.构造函数名字首字母要大写

2.构造函数不需要return 就可以返回结果

3.调用构造函数 必须使用 new

4.只要new Star() 调用函数就创建了一个对象 ldh {}

5.属性和方法前面必须添加this ,指向它。

new 关键字执行过程

1.new 构造函数可以在内存中创建了一个空的对象。

2.this就会指向刚才创建的空对象

3.执行构造函数里面的代码 给这个空对象添加属性和方法

4.返回这个对象(所以构造函数里面不需要return)

遍历对象

创建一个对象:

var obj = {
    name:'路飞',
    age : 17,
    sex : '男'
}
    console.log(obj.name);
    console.log(obj.age);
    console.log(obj.sex); // 按照以往的写法只能一个一个输出,要是有100个属性呢?有没有什么更简单的方法把里面的属性全都打印出来呢。因为对象里面都是无序的,传统的for循环是不能遍历打印出对象属性的。这里介绍一个新的循环。

for ...in:for..in语句用于对数组或者对象的属性进行循环操作。

语法结构:

var obj = {
    name:'路飞',
    age : 17,
    sex : '男'
}
for (var k in obj) {  // 里面的变量 k  不是固定的,不过我们喜欢成k 或者 key。
    console.log(k);  //  输出变量  k 得到的是  属性名
    console.log(obj[k]) // obj[k] 得到的是 属性值
}

小结:

  1. 对象可以让代码结构更清晰
  2. 对象复杂数据类型 object。
  3. 本质:对象就是一组无序的相关属性和方法的集合。
  4. 构造函数泛指某一大类,比如电脑,不管是笔记本电脑还是台式机电脑,都统称为电脑。
  5. 对象实例特指一个事物,比如这个苹果,正在给你们讲课的pink老师等。
  6. for .... in 语句用于对对象的属性进行循环操作。