对象 4个月前

编程语言
429
对象

1. 什么是对象

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

JavaScript中对象分为以下几种:

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

2. 为什么要用对象

假设我们需要展现一个人的属性, 以我们目前掌握的能力可以使用

//变量逐一定义
var name = "xiaobai";
var age = 20;
var man = true;

//数组定义
var person = ['xiaobai', 20, true];

我们发现使用变量可以保存一个值,使用数组可以保存多个值。但是想保存一个人的完整信息时,使用变量和数组都不太适合(浪费资源),这时就需要使用对象了。

3. 对象的基本使用


3.1 如何定义对象

JavaScript中定义对象的有三种主要方法

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

(1) 对象中的属性名称是字符串, 我们可以把属性名称写在引号里, 也可以省略引号; (2) 属性的值如果是数字,则可以不写引号,否则需要写引号,当属性值不是数字并且没有写在引号中时,会把它当作变量来使用。

  1. 使用new关键字创建
var obj = new Object(); //语法格式
obj.name = '张三';
obj.age = 20;
obj.speak = function() {
    console.log(this.name);
}
console.log(obj);
//{ name: '张三', age: 20, speak: [Function (anonymous)] }
  1. 使用构造函数来创造 此方式是需要先创建一个构造函数对象。然后再使用new关键字来创建。
/*语法格式:
function 对象(参数列表){设置}
var 对象名称 = new 对象();*/
function Student(name,age){
    this.name = name;
    this.age = age;
}
var stu = new Student('王五',21);
console.log(stu, typeof stu);
//Student { name: '王五', age: 21 } object

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

3.2 使用对象

  1. 当对象声明好以后,就可以使用 对象的引用名称.属性名对象引用名称.方法名 的 方式来使用这个对象。
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')

//输出
张三
18
张三, 18, 男
hello world
  1. 使用对象的属性还可以通过 对象引用名称[属性名] 的方式来访问。
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']);

//输出
张三
男

对于这两种访问对象的方法需要说明

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

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

//输出
{ '10': 20, name: '张三' }
20

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

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

//输出
{ name: '张三', 'first name': '小刘' }
小刘

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

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

//输出
xiaobai
xiaobai
xiaobai
image
EchoEcho官方
无论前方如何,请不要后悔与我相遇。
1377
发布数
439
关注者
2222780
累计阅读

热门教程文档

Spring Boot
24小节
Linux
51小节
Java
12小节
QT
33小节
Golang
23小节