JavaScript 对象

对象是 JavaScript 中的核心概念之一,它用于存储和组织数据。了解对象的创建、属性和方法的使用是深入理解 JavaScript 的重要部分。

7. 对象

7.1 对象的基本概念
  1. 创建对象

    • 对象字面量(Object Literal)

      • 定义:最常见的创建对象的方式,通过 {} 创建。

      示例

      let person = {
        name: 'Alice',
        age: 30,
        greet: function() {
          return `Hello, ${this.name}`;
        }
      };
      
      console.log(person.name); // Alice
      console.log(person.greet()); // Hello, Alice
      
    • 构造函数(Constructor Function)

      • 定义:使用 function 关键字定义的构造函数,通过 new 关键字创建对象实例。

      示例

      function Person(name, age) {
        this.name = name;
        this.age = age;
        this.greet = function() {
          return `Hello, ${this.name}`;
        };
      }
      
      let person1 = new Person('Bob', 25);
      console.log(person1.name); // Bob
      console.log(person1.greet()); // Hello, Bob
      
    • 类(Class)

      • 定义:ES6 引入的语法糖,用于定义对象的构造函数和方法。

      示例

      class Person {
        constructor(name, age) {
          this.name = name;
          this.age = age;
        }
      
        greet() {
          return `Hello, ${this.name}`;
        }
      }
      
      let person2 = new Person('Charlie', 35);
      console.log(person2.name); // Charlie
      console.log(person2.greet()); // Hello, Charlie
      
7.2 对象的属性和方法
  1. 访问和修改属性

    • 点操作符(Dot Notation)

      示例

      let car = {
        brand: 'Toyota',
        model: 'Corolla'
      };
      
      console.log(car.brand); // Toyota
      car.model = 'Camry';
      console.log(car.model); // Camry
      
    • 方括号操作符(Bracket Notation)

      示例

      let person = {
        'first name': 'Alice',
        'last name': 'Smith'
      };
      
      console.log(person['first name']); // Alice
      person['last name'] = 'Johnson';
      console.log(person['last name']); // Johnson
      
    • 动态属性名

      示例

      let key = 'color';
      let car = {
        [key]: 'red'
      };
      
      console.log(car.color); // red
      
  2. 对象方法

    • 定义方法

      示例

      let person = {
        name: 'Alice',
        sayHello() {
          return `Hello, ${this.name}`;
        }
      };
      
      console.log(person.sayHello()); // Hello, Alice
      
    • 方法简写

      • 定义:在对象字面量中,可以使用简写语法定义方法。

      示例

      let person = {
        name: 'Alice',
        greet() {
          return `Hello, ${this.name}`;
        }
      };
      
      console.log(person.greet()); // Hello, Alice
      
7.3 对象的继承和原型链
  1. 原型链(Prototype Chain)

    • 定义:每个 JavaScript 对象都有一个 [[Prototype]] 属性(在现代 JavaScript 中用 __proto__Object.getPrototypeOf 访问),指向另一个对象。这形成了原型链。

    示例

    let animal = {
      eats: true
    };
    
    let rabbit = Object.create(animal);
    rabbit.hops = true;
    
    console.log(rabbit.eats); // true
    console.log(rabbit.hops); // true
    
    • 访问原型属性

      示例

      console.log(rabbit.__proto__ === animal); // true
      
  2. 继承(Inheritance)

    • 通过原型继承

      示例

      function Animal(name) {
        this.name = name;
      }
      
      Animal.prototype.speak = function() {
        console.log(`${this.name} makes a noise.`);
      };
      
      function Dog(name) {
        Animal.call(this, name);
      }
      
      Dog.prototype = Object.create(Animal.prototype);
      Dog.prototype.constructor = Dog;
      
      Dog.prototype.bark = function() {
        console.log(`${this.name} barks.`);
      };
      
      let dog = new Dog('Rex');
      dog.speak(); // Rex makes a noise.
      dog.bark(); // Rex barks.
      
    • 通过类继承

      示例

      class Animal {
        constructor(name) {
          this.name = name;
        }
      
        speak() {
          console.log(`${this.name} makes a noise.`);
        }
      }
      
      class Dog extends Animal {
        bark() {
          console.log(`${this.name} barks.`);
        }
      }
      
      let dog = new Dog('Rex');
      dog.speak(); // Rex makes a noise.
      dog.bark(); // Rex barks.
      
7.4 对象的其他操作
  1. 对象的遍历

    • for...in 循环

      示例

      let person = {
        name: 'Alice',
        age: 30
      };
      
      for (let key in person) {
        console.log(key + ': ' + person[key]);
      }
      
    • Object.keys()

      • 定义:返回对象的所有可枚举属性名的数组。

      示例

      let person = {
        name: 'Alice',
        age: 30
      };
      
      console.log(Object.keys(person)); // ['name', 'age']
      
    • Object.values()

      • 定义:返回对象的所有可枚举属性值的数组。

      示例

      let person = {
        name: 'Alice',
        age: 30
      };
      
      console.log(Object.values(person)); // ['Alice', 30]
      
    • Object.entries()

      • 定义:返回对象的所有可枚举属性的键值对数组。

      示例

      let person = {
        name: 'Alice',
        age: 30
      };
      
      console.log(Object.entries(person)); // [['name', 'Alice'], ['age', 30]]
      
  2. 对象的合并和扩展

    • Object.assign()

      • 定义:将源对象的属性复制到目标对象中。

      示例

      let target = { name: 'Alice' };
      let source = { age: 30 };
      
      Object.assign(target, source);
      
      console.log(target); // { name: 'Alice', age: 30 }
      
    • 对象扩展运算符(Spread Operator)

      • 定义:在 ES6 中引入,用于浅拷贝对象或合并对象。

      示例

      let person = { name: 'Alice', age: 30 };
      let additionalInfo = { job: 'Engineer' };
      
      let updatedPerson = { ...person, ...additionalInfo };
      
      console.log(updatedPerson); // { name: 'Alice', age: 30, job: 'Engineer' }
      

8. 总结

  • 对象的创建:包括对象字面量、构造函数和类。
  • 对象的属性和方法:包括访问、修改属性和定义方法。
  • 对象的继承和原型链:包括通过原型链和类继承实现继承。
  • 对象的其他操作:包括遍历对象、合并和扩展对象等。

掌握对象的这些概念是 JavaScript 编程的重要基础,有助于你更好地组织和管理代码。接下来,可以学习 数组,了解如何操作数组,掌握数组的各种方法和特性。在掌握了函数的基本概念和高级特性之后,我们可以继续学习 对象。对象是 JavaScript 中的核心概念之一,它用于存储和组织数据。了解对象的创建、属性和方法的使用是深入理解 JavaScript 的重要部分。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跳房子的前端

你的打赏能让我更有力地创造

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值