在编程中,万物皆对象。我们在编程中,使用对象来描述万事万物。怎么描述呢?什么事物,只要描述了其特征和行为就可以知道在描述什么。
举个例子,我们猜个谜语:
什么东西,小时候是黑色的,长大是绿色的,小时候在水里游,长大了在岸上跳。
基本都可以猜到,我们描述的是青蛙。
其中,颜色是青蛙的特征,在水里游和在岸上跳是行为。
我们在编程中,也是使用特征行为描述任何事物。
使用属性描述事物的特征,使用方法来描述行为, 就是对象这种语法。
所以:对象就是属性和方法的集合

对象有什么用

我们之前学习过的对象:Math、Date

我们发现,只要学习对象的一些属性和方法,直接使用,就可以得到自己想要的效果。

例如-得到随机数: Math.random()

我们不需要关心随机数到底是怎么产生的,只要结果——不关心过程,只关心结果

  1. 使用对象可以方便的记录一些数据

这就要涉及到一个在编程界内的著名思想——面向对象思想

什么是面向对象思想?找对象,命令对象做事情。

肚子饿了,想吃饭,找一个厨师,命令厨师做饭给我们吃。厨师就是一个对象。我们不关系厨师是如果做饭的,只要做好了给我们吃就行。

就好像我们获取当前日期:

  1. // 新找到一个日期对象,就好像我们找到一个厨师
  2. var date = new Date();
  3. // 调用日期对象的获取年份的方法,就好像我们命令厨师做饭
  4. date.getFullYear();

所以对象的好处在于:我们只要知道对象有什么属性和方法,不需要知道对象里面是如何实现的。我们实现一个效果的过程将大缩短,实现高效开发。

对象的语法

创建对象

构造函数

  1. var obj = new Object(); // 这是一个没有属性和方法的对象
  2. console.log(obj);

字面量

  1. var obj = {}; // 这也是一个没有属性和方法对象,其本质和构造函数创建的对象是一样的
  2. console.log(obj);

为对象添加属性和方法

一个个设置

添加属性的语法:
对象.属性 = 值;
添加方法的语法:
对象.方法名 = function(){}
如: 使用对象描述一个叫狗蛋的人

  1. var obj = {};
  2. obj.name = '狗蛋';// 名字是一个人的特征
  3. obj.sayName = function(){ // 人会说出自己的名字,也就是人有自己的行为
  4. console.log('你好,我叫' + obj.name);
  5. }

字面量初始化对象

  1. // 描述一个学生
  2. var student = {
  3. name : '狗蛋',
  4. age : 12,
  5. gender : '男',
  6. sayName : function(){
  7. console.log(student.name);
  8. }
  9. }
  10. // 属性和值之间使用分号分隔,一个属性和一个值叫一个键值对。多个键值之间使用逗号分隔

使用对象的属性和方法

访问对象的属性:
对象.属性
调用对象的方法:
对象.方法名(参数);

  1. // 得到对象的名字,属性可以当成变量使用
  2. console.log(obj.name);
  3. // 调用对象的方法,方法的本质是函数
  4. obj.sayName();

对象语法补充

上面的方式是可以创建对象的,但是只能一个一个的创建,如果我们要创建大量的对象,那么上面的两个方式也就不推荐了。
当我们要大量创建的时候,我们想要创建对象,更好的方式是:自定义构造函数

自定义构造函数

语法格式

  1. function 要描述的对象的种类(参数){
  2. this.属性1 = 参数1;
  3. this.属性2 = 参数2;
  4. ...
  5. this.方法名 = function(){}
  6. ...
  7. }

例如我们要给学生对象写构造函数

  1. // 我们习惯将 描述对象种类的名词首字母大写
  2. function Student(name,age,gender){
  3. // 属性名不是一定要和形参一样,但是从语义的角度,最好是一样的
  4. this.name = name;
  5. this.age = age;
  6. this.gender = gender;
  7. // 学生有一个自我介绍的方法
  8. this.sayHi = function(){
  9. console.log('您好,我叫'+this.name+',今年'+this.age+'岁了,是个'+this.gender+'孩子');
  10. }
  11. }

此时当我们要创建一个学生的时候,只要new操作一下

  1. var s1 = new Student('狗蛋',12,'男');
  2. console.log(s1);
  3. // 让一个学生对象做自我介绍
  4. s1.sayHi();

被构造函数new出来的对象,我们称为该对象的实例对象——上面的代码来说,s1是Student构造函数的实例对象

键的方式访问对象的属性和有方法

语法:
对象[属性名]

  1. var obj = {};
  2. obj['name'] = '狗蛋';
  3. obj['sayName'] = function(){
  4. console.log('你好,我叫' + obj['name']);
  5. }