返回

解析[JS犀牛书英文第七版笔记]4. 对象,原型,原型链

前端

JavaScript 中的对象是一种复合数据类型,它可以存储各种各样的数据,包括基本数据类型(如数字、字符串和布尔值)和复杂数据类型(如数组和对象)。对象可以通过属性来访问和修改其数据,属性是对象的一个键值对,键是属性的名称,值是属性的值。

原型链是 JavaScript 中的一个重要概念,它可以帮助我们理解对象之间的关系。每个对象都有一个原型对象,原型对象也是一个对象,它包含了一些属性和方法,这些属性和方法可以被该对象和它的所有子对象使用。

对象、原型和原型链是 JavaScript 中非常重要的概念,它们可以帮助我们理解 JavaScript 的面向对象编程思想。在本文中,我们将详细介绍这三个概念,并通过一些示例来演示它们的使用方法。

1. 对象

对象是一种复合数据类型,它可以存储各种各样的数据,包括基本数据类型(如数字、字符串和布尔值)和复杂数据类型(如数组和对象)。对象可以通过属性来访问和修改其数据,属性是对象的一个键值对,键是属性的名称,值是属性的值。

例如,以下代码创建一个对象:

const person = {
  name: 'John Doe',
  age: 30,
  gender: 'male'
};

这个对象有两个属性:nameage。我们可以通过属性名称来访问对象的属性,例如:

console.log(person.name); // John Doe
console.log(person.age); // 30

我们也可以通过属性名称来修改对象的属性,例如:

person.name = 'Jane Doe';
person.age = 31;

2. 原型

原型是 JavaScript 中的一个重要概念,它可以帮助我们理解对象之间的关系。每个对象都有一个原型对象,原型对象也是一个对象,它包含了一些属性和方法,这些属性和方法可以被该对象和它的所有子对象使用。

例如,以下代码创建一个对象:

const person = {
  name: 'John Doe',
  age: 30,
  gender: 'male'
};

这个对象有一个原型对象,原型对象包含了一些属性和方法,这些属性和方法可以被该对象和它的所有子对象使用。例如,我们可以通过以下代码来访问原型对象的属性:

console.log(person.__proto__.toString()); // [object Object]

我们也可以通过以下代码来访问原型对象的方法:

console.log(person.__proto__.hasOwnProperty('name')); // true

3. 原型链

原型链是 JavaScript 中的一个重要概念,它可以帮助我们理解对象之间的关系。原型链是一个对象到其原型对象的链,每个对象都有一个原型对象,原型对象也有一个原型对象,以此类推。

例如,以下代码创建一个对象:

const person = {
  name: 'John Doe',
  age: 30,
  gender: 'male'
};

这个对象有一个原型对象,原型对象包含了一些属性和方法,这些属性和方法可以被该对象和它的所有子对象使用。原型对象的原型对象是Object.prototype对象,Object.prototype对象是所有对象的根原型对象,它包含了一些基本的方法,如toString()方法和hasOwnProperty()方法。

我们可以通过以下代码来访问原型链:

console.log(person.__proto__.__proto__); // [object Object]
console.log(person.__proto__.__proto__.__proto__); // null

原型链可以帮助我们理解对象之间的关系,它可以帮助我们找到一个对象的属性或方法的定义。例如,如果我们想要找到person对象的name属性的定义,我们可以通过以下代码来找到:

console.log(person.__proto__.hasOwnProperty('name')); // true

这表明name属性的定义在person对象的原型对象中。