📜  是对象 - Javascript (1)

📅  最后修改于: 2023-12-03 15:10:30.151000             🧑  作者: Mango

JavaScript 是对象

JavaScript 是一种基于对象的编程语言。在 JavaScript 中,一切都被视为对象。对象是一个拥有属性和方法的数据结构,可以通过操作属性和调用方法来改变对象的行为。

对象的创建

在 JavaScript 中,可以使用对象字面量、构造函数、Object.create() 和 class 等方法来创建对象。

对象字面量

对象字面量是创建对象最简单的方式之一,它使用大括号 { } 来定义对象的属性和方法。例如:

const person = {
  firstName: "John",
  lastName: "Doe",
  age: 30,
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
};
构造函数

构造函数是一种用于创建对象的特殊函数。它使用 new 关键字来调用,并且通常以大写字母开头。例如:

function Person(firstName, lastName, age) {
  this.firstName = firstName;
  this.lastName = lastName;
  this.age = age;
  
  this.fullName = function() {
    return this.firstName + " " + this.lastName;
  };
}

const person = new Person("John", "Doe", 30);
Object.create()

Object.create() 是一个静态方法,用于创建一个新对象,并将其原型设置为指定的对象。例如:

const personPrototype = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
};

const person = Object.create(personPrototype);
person.firstName = "John";
person.lastName = "Doe";
person.age = 30;
class

class 是 ES6 中新增的语法,它用于定义一个类,并创建具有相同属性和方法的对象。例如:

class Person {
  constructor(firstName, lastName, age) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.age = age;
  }

  fullName() {
    return this.firstName + " " + this.lastName;
  }
}

const person = new Person("John", "Doe", 30);
对象属性和方法

对象的属性和方法可以通过对象点语法、方括号语法和 Object.defineProperty() 等方式进行访问和修改。例如:

const person = {
  firstName: "John",
  lastName: "Doe",
  age: 30,
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
};

// 通过点语法访问属性和方法
console.log(person.firstName);       // "John"
console.log(person.lastName);        // "Doe"
console.log(person.age);             // 30
console.log(person.fullName());      // "John Doe"

// 通过方括号语法访问属性和方法
console.log(person["firstName"]);   // "John"
console.log(person["lastName"]);    // "Doe"
console.log(person["age"]);         // 30
console.log(person["fullName"]());  // "John Doe"

// 使用 Object.defineProperty() 定义属性和方法
Object.defineProperty(person, "email", {
  value: "john.doe@example.com",
  writable: false,
  enumerable: true,
  configurable: true
});

console.log(person.email);           // "john.doe@example.com"
对象继承

在 JavaScript 中,可以通过原型继承和类继承来实现对象的继承。原型继承是 JavaScript 中最常用的继承方式,它使用对象的原型来实现继承。例如:

function Animal(name) {
  this.name = name;
}

Animal.prototype.sayName = function() {
  console.log(this.name);
}

function Dog(name, breed) {
  Animal.call(this, name);
  this.breed = breed;
}

Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;

Dog.prototype.sayBreed = function() {
  console.log(this.breed);
}

const dog = new Dog("Fido", "Labrador Retriever");

dog.sayName();    // "Fido"
dog.sayBreed();   // "Labrador Retriever"

类继承是 ES6 中新增的继承方式,它使用 extends 关键字来实现继承。例如:

class Animal {
  constructor(name) {
    this.name = name;
  }

  sayName() {
    console.log(this.name);
  }
}

class Dog extends Animal {
  constructor(name, breed) {
    super(name);
    this.breed = breed;
  }

  sayBreed() {
    console.log(this.breed);
  }
}

const dog = new Dog("Fido", "Labrador Retriever");

dog.sayName();    // "Fido"
dog.sayBreed();   // "Labrador Retriever"

以上就是 JavaScript 是对象的介绍。对象是 JavaScript 的核心,理解对象的属性、方法和继承对于学好 JavaScript 非常重要。