解析[JS犀牛书英文第七版笔记]4. 对象,原型,原型链
2023-10-10 06:23:01
JavaScript 中的对象是一种复合数据类型,它可以存储各种各样的数据,包括基本数据类型(如数字、字符串和布尔值)和复杂数据类型(如数组和对象)。对象可以通过属性来访问和修改其数据,属性是对象的一个键值对,键是属性的名称,值是属性的值。
原型链是 JavaScript 中的一个重要概念,它可以帮助我们理解对象之间的关系。每个对象都有一个原型对象,原型对象也是一个对象,它包含了一些属性和方法,这些属性和方法可以被该对象和它的所有子对象使用。
对象、原型和原型链是 JavaScript 中非常重要的概念,它们可以帮助我们理解 JavaScript 的面向对象编程思想。在本文中,我们将详细介绍这三个概念,并通过一些示例来演示它们的使用方法。
1. 对象
对象是一种复合数据类型,它可以存储各种各样的数据,包括基本数据类型(如数字、字符串和布尔值)和复杂数据类型(如数组和对象)。对象可以通过属性来访问和修改其数据,属性是对象的一个键值对,键是属性的名称,值是属性的值。
例如,以下代码创建一个对象:
const person = {
name: 'John Doe',
age: 30,
gender: 'male'
};
这个对象有两个属性:name
和age
。我们可以通过属性名称来访问对象的属性,例如:
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
对象的原型对象中。