JavaScript对象

93 阅读3分钟

开启掘金成长之旅!这是我参加「掘金日新计划·12月更文挑战」的第四天,点击查看活动详情

什么是对象?

在JavaScript中,对象是一种复合的数据类型,用于保存一组无序的相关属性和方法的集合。
属性:描述事物的特征,常用名词来定义
方法:描述事物的行为,常用动词来定义
JavaScript中对象分为以下几种:

  1. 内置对象:
    在ES标准中定义的对象,在任何ES实现中都可以使用,如:Math,String,Number,Function,Array等。
  2. 宿主对象:
    由JavaScript运行环境(浏览器)提供的对象,如:BOM,DOM。
  3. 自定义对象
    由开发人员自己创建的对象。

为什么需要对象

例如:我们要存储人的信息

var name = ‘张三’;
var age = 18;
var gender = '女';

这种方式能够解决问题,但是会浪费很多资源。
还可以使用数组来定义:

var person = ['张三',18,'女'];

能够解决,但是不方便。

使用对象来进行存储,更加方便。

使用变量可以保存一个值,使用数组可以保存多个值。但是想保存一个人的完整信息时,使用变量和数组都不太适合,这时就需要使用对象了。

如何定义对象

在JavaScript中定义对象有三种方式:

  1. 使用字面量来创建
    在定义对象时,可以使用字面量大括号{}来定义。在大括号中可以声明属性和方法。属性和值之间使用英文冒号来创建,属性与属性之间使用逗号来分隔。
              var person = {
                  'name' : '张三',
                  age : 18,
                  gender : '男',
                  say:function(){
                      console.log(this.name);
                  }
              }
              console.log(person,typeof person);

说明:
(1) 对象中的属性名称是字符串,我们可以把属性名称写在引号里,也可以省略引号;

(2) 属性的值如果是数字,则可以不写引号,否则需要写引号,当属性值不是数字并且没有写在引号中时,会把它当作变量来使用。

  1. 使用new关键字来创建

语法格式:var对象引用名称 = new Object();

              var obj = new Object();
              obj.name = '张三';
              obj.age = 20;
              obj.speak = functon(){
                  console.log(this.name);
              };
              console.log(obj);
  1. 使用构造函数来创建

这种方式是需要先创建一个构造函数对象。然后再使用new关键字来创建。
语法格式:
function 对象(参数列表){设置}
var 对象名称 = new 对象();

              function Student(name,age){
                  this.name = name;
                  tais.age = age;
              }
              var stu = new Student('王五',21);
              console.log(stu,typeof stu);

说明:在定义构造函数时,函数名称的第一个字符要大写。

使用对象

当对象声明好以后,就可以使用“对象的引用名称.属性名”或“对象引用名称.方法名“的方式来使用这个对象。

              var person = {
                  name: '张三',
                  age: 18,
                  gender: '男',
                  show: function() {
                       console.log(this.name + ', ' + this.age + ', '          + this.gender);
                  },
                   say:function(s) {
                       console.log('hello ' + s);
                  }
              }
              console.log(person.name);
              console.log(person.age);
              person.show();
              person.say('world'

使用对象的属性还可以通过“对象引用名称[属性名]”的方式来访问。

            var person = {
                name: '张三',
                age: 18,
                gender: '男',
                show: function() {
                console.log(this.name + ', ' + this.age + ', '                 + this.gender);
                },
                say: function(s) {
                   console.log('hello ' + s);
                }
            }
            console.log(person.name);
            console.log(person['gender']);

什么时候使用.的方式,什么时候使用[]的方式?

(1)如果属性名是数字,那么只能通过中括号的方式来读取。

            var person = {
                name: '张三',
                10: 20,
            };
            console.log(person);
            //console.log(person.10); // 不能这么读 
            console.log(person['10']); // 可以

(2)如果属性名称中有空格或特殊字符,那么属性名的引号就不能省略,访问这种属性时,只能通过中括号的方式来访问。

          var person = {
                name: '张三',
                'first name': '小刘',
            };
            console.log(person);
            //console.log(person.'first name'); // 也不行,会报错 
            console.log(person['first name']); // 可以

(3)当访问对象时是使用的某个变量时,则需要使用中括号的方式。不能使用 . 的方式。

          var x = 'name';
          var obj = {
              name: '张三丰'
          }
          console.log(obj.name);
          console.log(obj['name']);
          console.log(obj[x]);