返回

JavaScript对象总结:面向对象、原型链、继承

前端

JavaScript对象总结:面向对象、原型链、继承

JavaScript 是一种基于对象的编程语言,这表明它可以基于对象的集合。该语言具有创建对象和操作对象的内置功能。

1.面向对象

面向对象编程是一种编程范式,它将对象作为基本组成单元。对象是一种数据类型,可以存储数据并具有执行操作的功能。对象可以包含其他对象,并且可以相互交互。

在JavaScript中,对象通常使用花括号定义。例如:

const person = {
  name: "John Doe",
  age: 30,
  greet: function() {
    console.log("Hello, my name is " + this.name);
  }
};

在这个例子中,person是一个对象。它包含三个属性:nameagegreetnameage是字符串,而greet是一个函数。

2.原型链

JavaScript中,每个对象都有一个原型对象。原型对象是另一个对象,它包含该对象的所有属性和方法。当对象访问一个属性或方法时,它首先会在自身中查找。如果找不到,它就会在原型对象中查找。依此类推,一直到找到该属性或方法。

例如,在上面的例子中,person对象的原型对象是Object.prototypeObject.prototype包含所有JavaScript对象共有的一些属性和方法,例如toString()valueOf()

3.继承

继承是一种将一个对象的所有属性和方法传递给另一个对象的机制。在JavaScript中,继承是通过原型链实现的。

例如,我们可以创建一个新的对象student,它继承自person对象。我们可以这样做:

const student = Object.create(person);

现在,student对象将具有person对象的所有属性和方法。我们还可以向student对象添加新的属性和方法。例如:

student.major = "Computer Science";
student.study = function() {
  console.log("I am studying.");
};

现在,student对象具有person对象的所有属性和方法,以及它自己的属性和方法。

4.构造函数

构造函数是一种特殊的函数,它用于创建对象。构造函数的名称以大写字母开头。例如:

function Person(name, age) {
  this.name = name;
  this.age = age;
  this.greet = function() {
    console.log("Hello, my name is " + this.name);
  };
}

要使用构造函数创建对象,我们可以这样做:

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

现在,person对象将具有Person构造函数的所有属性和方法。

5.原型

原型是对象的一个特殊属性,它指向该对象的原型对象。我们可以使用__proto__属性来访问原型。例如:

console.log(person.__proto__);

这将输出Person.prototype

6.私有属性和方法

在JavaScript中,没有真正的私有属性和方法。但是,我们可以使用一些技巧来模拟它们。

一种方法是使用闭包。例如:

const person = (function() {
  let privateName = "John Doe";
  let privateAge = 30;

  return {
    getName: function() {
      return privateName;
    },
    setName: function(name) {
      privateName = name;
    },
    getAge: function() {
      return privateAge;
    },
    setAge: function(age) {
      privateAge = age;
    }
  };
})();

在这个例子中,privateNameprivateAge是私有属性,getName()setName()getAge()setAge()是私有方法。

7.公有属性和方法

公有属性和方法是那些可以从对象外部访问的属性和方法。例如,在上面的例子中,nameagegreet()都是公有属性和方法。

8.实例

实例是通过构造函数创建的对象。例如,在上面的例子中,person对象是Person构造函数的实例。

9.类

类是创建对象的模板。类包含构造函数、属性和方法。例如,在上面的例子中,Person类包含构造函数、name属性、age属性和greet()方法。

10.总结

JavaScript对象是基于对象的集合。它们可以包含属性和方法。对象可以相互交互。JavaScript中的继承是通过原型链实现的。构造函数用于创建对象。原型是对象的一个特殊属性,它指向该对象的原型对象。私有属性和方法可以使用闭包来模拟。公有属性和方法是可以从对象外部访问的属性和方法。实例是通过构造函数创建的对象。类是创建对象的模板。